java 之 桥接模式(大话设计模式)

桥接模式定义为:将抽象部分与它的实现部分分离,使它们都可以独立的变化。

第一次看设计模式的时候,不是很清楚这句话的意思,随着笔者的不断开发,发现有一种场景,

继承关系多了,不易于维护父类,而笔者认为桥接模式的出现很好的解决了这个问题。用聚合解决继承的父类难维护性。先看下桥接模式设计图。

大话设计模式-类图

java 之 桥接模式(大话设计模式)

以上类图很简单易懂,先看下笔者的demo

/**
* 操作接口
*/
public interface IOperate { public void operate();
}
/**
* 品牌父类
*/
public class Brand { private IOperate operate; public Brand(IOperate operate) {
super();
this.operate = operate;
} public void operate() {
operate.operate();
} public IOperate getOperate() {
return operate;
} public void setOperate(IOperate operate) {
this.operate = operate;
}
}
/**
* 玩游戏
*/
public class Game implements IOperate{
@Override
public void operate() {
System.out.println("玩游戏");
} }
/**
* 看通讯录
*/
public class MailList implements IOperate {
@Override
public void operate() {
System.out.println("看通讯录");
} }
/**
* M品牌
*/
public class MBrand extends Brand{ public MBrand(IOperate operate) {
super(operate);
} }
/**
* N品牌
*/
public class NBrand extends Brand{ public NBrand(IOperate operate) {
super(operate);
} }
/**
* 客户端
*/
public class Test {
public static void main(String[] args) {
IOperate game = new Game();
IOperate mailList = new MailList(); Brand nBrand = new NBrand(game);
nBrand.operate(); nBrand = new NBrand(mailList);
nBrand.operate(); Brand mBrand = new MBrand(game);
mBrand.operate(); mBrand = new MBrand(mailList);
mBrand.operate();
}
}

运行结果如下

玩游戏
看通讯录
玩游戏
看通讯录

比较好理解,不过笔者认为我们在实际开发中,可能很多地方会用到桥接模式,只是大家都忘记这个模式,而用继承去实现。

还是那句老话,理解其核心思想,拒绝生搬硬套。希望能帮助学习桥接模式的小伙伴。

上一篇:【玩转Golang】 通过组合嵌入实现代码复用


下一篇:(Design Pattern) Singleton.