零、前言:将抽象化与实现化脱耦,使得二者独立的变化
桥接模式的介绍什么的就免了(我懒),程序员间还是用图和代码交流吧
代码中有些命名使用了汉字,还请见谅,毕竟设计模式还是易读得好些
一图镇楼
![9414344-0ef1af6ad73e3e34.png](https://i-blog.csdnimg.cn/blog_migrate/0ded5475c863d7645be686a5b63570f1.webp?x-image-process=image/format,png)
桥接模式.png
一、代码实现
1、桥接模式UML
![9414344-0513837e6ecb9bb8.png](https://i-blog.csdnimg.cn/blog_migrate/5f373b32b14dc5735be1a49f33a20af2.webp?x-image-process=image/format,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、测试结果
游戏王卡:我的回合,抽牌
卡片升级--->银卡
炉石卡:为了正义
卡片升级--->金卡
本文由张风捷特烈原创,转载请注明