设计模式之桥梁模式
来源:互联网 发布:淘宝古着能买吗 编辑:程序博客网 时间:2024/05/17 02:43
Bridge Pattern:将类的抽象部分与实现部分分离,使它们可以独立地变化。
当一个类的分类可以有多种方式的时候,比如说手机里的应用,可以先按照手机品牌区分,然后再按照应用种类区分;也可以先按照应用种类来区分,然后再按照手机品牌区分。而且品牌和应用种类都可以随意添加。如果直接使用继承来实现,每增加一种品牌,就要多继承出已有应用种类数量的新品牌类,这显然是十分不科学的。
根据合成/聚合复用原则,应该尽量使用合成/聚合方式去组织类。因此可以考虑抽象出手机品牌类和手机应用类,手机品牌类依赖于手机应用类。
手机品牌类及其子类:(与App类的关系是aggregation关系)
public abstract class Phone { protected App app; public void setApp(App app) { this.app = app; } public void run() { System.out.print(getClass().getSimpleName() + " "); app.run(); }}class MiPhone extends Phone {}class IPhone extends Phone {}
应用类及其子类:
public abstract class App { public abstract void run();}class Game extends App { @Override public void run() { System.out.println("run app game"); }}class Contact extends App { @Override public void run() { System.out.println("run app contact"); }}
测试类:
public class Main { public static void main(String[] args) { final MiPhone miPhone = new MiPhone(); miPhone.setApp(new Game()); miPhone.run(); final IPhone iPhone = new IPhone(); iPhone.setApp(new Contact()); iPhone.run(); }}
输出:
MiPhone run app gameIPhone run app contact
这样一来,如果要添加新的手机品牌或者手机应用,只要添加单个品牌类或者应用类即可,想要具体某种品牌某种应用的话,只要两两组合即可。
因为品牌类和抽象类两个类之间是聚合关系,将各自旗下的子类连接了起来,所以叫做Bridge Pattern。也就是所说的将抽象部分与其实现部分相分离,使之可以独立的变化。
阅读全文
0 0
- 设计模式之-桥梁模式
- 设计模式之桥梁模式
- 设计模式之桥梁模式
- 设计模式之桥梁模式
- 设计模式之桥梁模式
- 设计模式之桥梁模式
- java设计模式之桥梁
- 二十三 设计模式之桥梁模式
- 【设计模式】之 Bridge 桥梁模式
- java设计模式之桥梁模式
- Java设计模式笔记之桥梁模式
- Java设计模式泛型化之桥梁模式
- 设计模式之Bridge(桥梁)模式
- Swift设计模式之桥梁模式
- 设计模式之桥梁模式--- Pattern Bridge
- java设计模式之桥梁模式
- 23种设计模式之桥梁模式
- 设计模式之桥梁模式10
- vb和vb.net的比较
- 深度信念神经网络DBN最通俗易懂的教程
- trident API指南
- C语言同学录(通讯录)的实现
- C++中的继承和虚函数、纯虚函数
- 设计模式之桥梁模式
- bzoj2789 letters 树状数组
- 51nod1130 N的阶乘的长度 V2(斯特林近似)
- 第三个程序之图像模糊
- 【跟着stackoverflow学Pandas】 -Get list from pandas DataFrame column headers
- CentOS7下搭建FTP服务器
- trident State应用指南
- bzoj1708 [Usaco2007 Oct]Money奶牛的硬币(完全背包)
- Spring RestTemplate Post with Header