• 去吧!设计模式之桥接模式


    零、前言:将抽象化与实现化脱耦,使得二者独立的变化

    桥接模式的介绍什么的就免了(我懒),程序员间还是用图和代码交流吧
    代码中有些命名使用了汉字,还请见谅,毕竟设计模式还是易读得好些

    一图镇楼
    9414344-0ef1af6ad73e3e34.png
    桥接模式.png

    一、代码实现

    1、桥接模式UML
    9414344-0513837e6ecb9bb8.png
    桥接模式UML.png
    2、卡片抽象类
    /**
     * 作者:张风捷特烈
     * 时间:2018/8/25 0025:8:18
     * 邮箱:1981462002@qq.com
     * 说明:卡片抽象类
     */
    public abstract class Card {
        protected Material mMaterial;
    
        public void setMaterial(Material material) {
            mMaterial = material;
        }
    
        public abstract void play();
    }
    
    3、扑克牌
    public class 扑克牌 extends Card {
    
        public 扑克牌() {
            play();
        }
    
        @Override
        public void play() {
            System.out.println("扑克牌:我就剩一张牌了");
        }
    }
    
    
    4、游戏王卡片
    public class 游戏王卡 extends Card {
        public 游戏王卡() {
            play();
        }
    
        @Override
        public void play() {
            System.out.println("游戏王卡:我的回合,抽牌");
        }
    }
    
    5、炉石卡
    public class 炉石卡 extends Card {
    
        public 炉石卡() {
            play();
        }
    
        @Override
        public void play() {
            System.out.println("炉石卡:为了正义");
        }
    }
    
    6、材质接口
    public  abstract class Material {
        public abstract void cover();
    }
    
    7、金材质
    public class 金 extends Material {
    
        public 金() {
            cover();
        }
    
        @Override
        public void cover() {
            System.out.println("卡片升级--->金卡");
        }
    }
    
    8、银材质
    public class 银 extends Material {
        public 银() {
            cover();
        }
    
        @Override
        public void cover() {
            System.out.println("卡片升级--->银卡");
        }
    }
    
    9、测试类
    public class Player {
        public static void main(String[] args) {
            游戏王卡 混沌战士 = new 游戏王卡();
            混沌战士.setMaterial(new 银());
    
            炉石卡 乌瑟尔 = new 炉石卡();
            乌瑟尔.setMaterial(new 金());
        }
    }
    
    10、测试结果
    游戏王卡:我的回合,抽牌
    卡片升级--->银卡
    炉石卡:为了正义
    卡片升级--->金卡
    

    本文由张风捷特烈原创,转载请注明

  • 相关阅读:
    Apache2支持py,pl,cgi,sh
    javascript利用Active操作本地文件
    桥接模式下的手机-电脑-开发板连接
    Django signal
    mysql改变表的编码字符集(utf8改为utf8mb4)
    Mysql 多表关联查询
    Python unicode转义字符u的处理
    How to filter a DateTimeField by date in Django?
    python闭包变量迟邦定
    Ubuntu16.04安装&创建Python虚拟环境
  • 原文地址:https://www.cnblogs.com/toly-top/p/9781946.html
Copyright © 2020-2023  润新知