zoukankan      html  css  js  c++  java
  • 去吧!设计模式之桥接模式

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

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

    一图镇楼
    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、测试结果
    游戏王卡:我的回合,抽牌
    卡片升级--->银卡
    炉石卡:为了正义
    卡片升级--->金卡
    

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

  • 相关阅读:
    解锁 redis 锁的正确姿势
    PHP实现Redis单据锁,防止并发重复写入
    js笔记
    FormData使用方法详解
    jquery里用each遍历的值存到数组和字符串
    Sublime Text3 安装 CTags 插件出现乱码
    通过pd.to_sql()将DataFrame写入Mysql
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket
    pandas 从txt读取DataFrame&DataFrame格式化保存到txt
    pandas 取消读取csv时默认第一行为列名
  • 原文地址:https://www.cnblogs.com/toly-top/p/9781946.html
Copyright © 2011-2022 走看看