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(); } }
运行结果如下
玩游戏 看通讯录 玩游戏 看通讯录
比较好理解,不过笔者认为我们在实际开发中,可能很多地方会用到桥接模式,只是大家都忘记这个模式,而用继承去实现。
还是那句老话,理解其核心思想,拒绝生搬硬套。希望能帮助学习桥接模式的小伙伴。
相关推荐
AscaryBird 2020-07-27
zcabcd 2020-04-30
summerinsist 2020-04-30
leeham 2020-04-19
Wytheme 2020-01-19
风吹草动 2019-12-18
89284553 2019-12-04
xuebingnan 2019-10-23
hce0 2015-12-05
小波波 2011-06-15
易分享 2015-05-06
wwwchinabignet 2011-07-08
麦田开拓者 2011-07-05
Palingenesis 2019-07-01
苗疆三刀的随手记 2019-06-28
lanyu 2010-11-14
86981538 2017-06-18
水痕 2019-12-06