(10)Java设计模式-桥接模式(Bridge)
来源:互联网 发布:珠光色眼影推荐知乎 编辑:程序博客网 时间:2024/05/21 17:54
简单来讲,桥接模式是一个两层的抽象。
桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。
1、桥接模式的故事
电视和遥控器(图中有错字)是一个完美展示两层抽象的例子。你有一个电视机的接口,还有一个遥控器的抽象类。我们都知道,将它们中任何一个定义为一个具体类都不是好办法,因为其它厂家会有不同的实现方法。
2、桥接模式Java示例代码
首先定义电视机的接口:ITV
public interface ITV { public void on(); public void off(); public void switchChannel(int channel);}
实现三星的 ITV 接口。
public class SamsungTV implements ITV { @Override public void on() { System.out.println("Samsung is turned on."); } @Override public void off() { System.out.println("Samsung is turned off."); } @Override public void switchChannel(int channel) { System.out.println("Samsung: channel - " + channel); }}
再实现索尼的ITV接口。
public class SonyTV implements ITV { @Override public void on() { System.out.println("Sony is turned on."); } @Override public void off() { System.out.println("Sony is turned off."); } @Override public void switchChannel(int channel) { System.out.println("Sony: channel - " + channel); }}
遥控器要包含对TV的引用。
public abstract class AbstractRemoteControl { /** * @uml.property name="tv" * @uml.associationEnd */ private ITV tv; public AbstractRemoteControl(ITV tv){ this.tv = tv; } public void turnOn(){ tv.on(); } public void turnOff(){ tv.off(); } public void setChannel(int channel){ tv.switchChannel(channel); }}
定义遥控器的具体类。
public class LogitechRemoteControl extends AbstractRemoteControl { public LogitechRemoteControl(ITV tv) { super(tv); } public void setChannelKeyboard(int channel){ setChannel(channel); System.out.println("Logitech use keyword to set channel."); }}
public class Main { public static void main(String[] args){ ITV tv = new SonyTV(); LogitechRemoteControl lrc = new LogitechRemoteControl(tv); lrc.setChannelKeyboard(100); }}
输出如下:
Sony: channel – 100Logitech use keyword to set channel.
总结一下, 桥接模式允许两层实现的抽象,上面的电视机和遥控器就是很好的例子。可见,桥接模式提供了更多的灵活性。
3、Eclipse 平台上的桥接模式
在Eclipse 架构使用的模式中,桥接模式占有重要的地位。
参考文献
Gamma, E, Helm, R, Johnson, R, Vlissides, J著: Design Patterns, 第151页. Addison-Wesley出版社, 1995
维基百科中的Bridge Pattern条目
原文链接: programcreek 翻译: ImportNew.com - 陈雅峰
译文链接: http://www.importnew.com/6857.html
[ 转载请保留原文出处、译者和译文链接。]
0 0
- (10)Java设计模式-桥接模式(Bridge)
- Java设计模式 - Bridge(桥接模式)
- Java设计模式——桥接模式(Bridge)
- (转)设计模式-----桥接模式(Bridge Pattern)-Java
- JAVA--桥接模式(Bridge)--设计模式十
- Java设计模式(八):桥接模式bridge
- Java语言设计模式之桥接(Bridge)模式
- 设计模式:桥接模式(Bridge)
- 设计模式:桥接模式(Bridge)
- 设计模式:桥接模式(Bridge)
- 设计模式:桥接模式(Bridge)
- 【设计模式】桥接模式(Bridge)
- 设计模式(10)-桥接模式(Bridge)
- Java设计模式-----Bridge桥接模式
- Java设计模式-----Bridge桥接模式
- Java设计模式----桥接模式(Bridge)
- java 设计模式--桥梁模式(Bridge)
- 设计模式之 Bridge 模式(桥接模式)
- pca-svd-vriance-covirance
- poj 1258 最小生成树
- HDU 5057-平方分割(分块)
- 如何安装及使用CocoaPods
- 欢迎使用CSDN-markdown编辑器
- (10)Java设计模式-桥接模式(Bridge)
- 欢迎使用CSDN-markdown编辑器
- 【c语言】用迭代计算斐波那契数
- Android studio 升级,不用下载完整版,完美更新到2.0
- maven的scm插件介绍及使用示例
- 访问单个节点的删除
- Java中获取文件大小的正确方法
- sqlserver中的dbo当用and 1=0/user SQL注入时
- C++ 指向空指针的对象(关于编译时绑定和运行时绑定)