JAVA系列-设计模式-桥接模式
来源:互联网 发布:殷都区水冶镇豫广网络 编辑:程序博客网 时间:2024/05/21 08:40
主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。
该模式的目标是通过把高层的抽象和底层的实现分开,分别构建自己的类层次结构,并通过实现部分的接口将两部分进行桥接,从而达到高层抽象和底层实现可以独立的方便扩展的目的。其核心是分离,和委托。
package Bridge;public abstract class Clothing {public abstract void personDressCloth(Person person);}
package Bridge;public class Jacket extends Clothing{ public void personDressCloth(Person person) { System.out.println(person.getType() + "穿马甲"); }}
package Bridge;public class Trouser extends Clothing{public void personDressCloth(Person person) { System.out.println(person.getType() + "穿裤子"); }}
package Bridge;public abstract class Person { private Clothing clothing; private String type; public Clothing getClothing() { return clothing; } public void setType(String type) { this.type = type; } public String getType() { return this.type; } public abstract void dress();}
package Bridge;public abstract class Person { private Clothing clothing; private String type; public Clothing getClothing() { return clothing; } public void setType(String type) { this.type = type; } public String getType() { return this.type; } public abstract void dress();}
package Bridge;public class Man extends Person { public Man() { setType("男人"); } public void dress() { Clothing clothing = getClothing(); clothing.personDressCloth(this); }}
package Bridge;/** * 桥接模式 * 将抽象部分与它实现部分分离,使它们都可以独立地变化。 适用性 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以选择或者切换。 2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 3.对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。 4.正如在意图一节的第一个类图中所示的那样,有许多类要生成。 这一种类层次结构说明你必须将一个对象分解成两个部分。 5.想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。 * @author Administrator * */public class Test {public static void main(String[] args) { Person man = new Man(); Person lady = new Lady(); Clothing jacket = new Jacket(); Clothing trouser = new Trouser(); jacket.personDressCloth(man); trouser.personDressCloth(man); jacket.personDressCloth(lady); trouser.personDressCloth(lady); }}
这篇文章讲的更为详细
- JAVA系列-设计模式-桥接模式
- Java/Android 设计模式系列(8)--桥接模式
- Java设计模式系列
- JAVA系列-设计模式-抽象工厂模式
- JAVA系列-设计模式-适配器模式
- JAVA系列-设计模式-建造者模式
- JAVA系列-设计模式-责任链模式
- JAVA系列-设计模式-命令模式
- JAVA系列-设计模式-组合模式
- JAVA系列-设计模式-装饰者模式
- JAVA系列-设计模式-解释器模式
- JAVA系列-设计模式-外观模式
- JAVA系列-设计模式-工厂模式
- JAVA系列-设计模式-享元模式
- JAVA系列-设计模式-迭代器模式
- JAVA系列-设计模式-中介者模式
- JAVA系列-设计模式-备忘录模式
- JAVA系列-设计模式-观察者模式
- 10299 Problem A: Modular Fibonacci(斐波那契的矩阵快速幂)
- 集成ffmpeg/x264:ERROR: libx264 not found的问题
- VC++获取U盘盘符(各种类型的驱动器都可以)
- 为CListBox加上智能水平滚动条
- codeblocks提示不兼容函数的解决方法
- JAVA系列-设计模式-桥接模式
- 新开源项目Bools启动!
- Kconfig文件结构(图文)简介
- mingw编译ltp(undefined reference to WSAStartup@8)
- CMD命令汇总 电脑入门知识【装机吧】
- split和StringTokenizer使用多个分隔符的情况
- 双链表
- Random类 学习笔记(一)
- Centos英文系统转换成中文系统 Centos中文转英文