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

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

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

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

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

原文地址:https://www.cnblogs.com/toly-top/p/9781946.html