设计模式 – 桥接模式(Bridge)
来源:互联网 发布:android 消息推送 知乎 编辑:程序博客网 时间:2024/06/05 07:15
ü 核心:将抽象部分与它的实现部分分离,使他们都可以独立地变化;
ü 结构图:
ü 用途:当系统的实现可以按多个角度(范畴)进行分类,而每一种分类都有可能变化时,那么就把这种多角度分离出来让他们独立变化,从而减少他们之间的耦合;
ü 实例:手机型号与手机软件的组合
Ø 手机软件抽象类 – 文件HandSetSoft.java
package com.yilong.bridge.handset.software;
public abstract class HandSetSoft {
public abstract void run();
}
Ø 手机游戏类 – 文件HandSetGame.java
package com.yilong.bridge.handset.software;
public class HandSetGame extends HandSetSoft {
@Override
public void run() {
System.out.println("运行手机游戏!");
}
}
Ø 手机通讯录类 – 文件HandSetConnection.java
package com.yilong.bridge.handset.software;
public class HandSetConnection extends HandSetSoft {
@Override
public void run() {
System.out.println("运行手机通讯录!");
}
}
Ø 手机型号抽象类 – 文件HandSetBrand.java
package com.yilong.bridge.handset.brand;
import com.yilong.bridge.handset.software.HandSetSoft;
public abstract class HandSetBrand {
private HandSetSoft handSetSoft;
public HandSetBrand(HandSetSoft handSetSoft) {
this.handSetSoft = handSetSoft;
}
public abstract void run();
public HandSetSoft getHandSetSoft() {
return handSetSoft;
}
public void setHandSetSoft(HandSetSoft handSetSoft) {
this.handSetSoft = handSetSoft;
}
}
Ø 手机型号M类 – 文件HandSetBrandM.java
package com.yilong.bridge.handset.brand;
import com.yilong.bridge.handset.software.HandSetSoft;
public class HandSetBrandM extends HandSetBrand {
public HandSetBrandM(HandSetSoft handSetSoft) {
super(handSetSoft);
}
@Override
public void run() {
System.out.println("运行品牌为M的手机!");
if(this.getHandSetSoft() != null) {
System.out.print("--");
this.getHandSetSoft().run();
}
}
}
Ø 手机型号N类 – HandSetBrandN.java
package com.yilong.bridge.handset.brand;
import com.yilong.bridge.handset.software.HandSetSoft;
public class HandSetBrandN extends HandSetBrand {
public HandSetBrandN(HandSetSoft handSetSoft) {
super(handSetSoft);
}
@Override
public void run() {
System.out.println("运行品牌为N的手机");
if(this.getHandSetSoft() != null) {
System.out.print("--");
this.getHandSetSoft().run();
}
}
}
Ø 测试类 – 文件Main.java
package com.yilong.bridge.handset.test;
import com.yilong.bridge.handset.brand.HandSetBrandM;
import com.yilong.bridge.handset.brand.HandSetBrandN;
import com.yilong.bridge.handset.software.HandSetConnection;
import com.yilong.bridge.handset.software.HandSetGame;
public class Main {
public static void main(String[] args) {
System.out.println("-------------------------");
HandSetBrandM handSetM = new HandSetBrandM(new HandSetGame());
handSetM.run();
handSetM.setHandSetSoft(new HandSetConnection());
handSetM.run();
System.out.println("-------------------------");
HandSetBrandN handSetN = new HandSetBrandN(new HandSetGame());
handSetN.run();
handSetN.setHandSetSoft(new HandSetConnection());
handSetN.run();
}
}
Ø 打印结果:
-------------------------
运行品牌为M的手机!
--运行手机游戏!
运行品牌为M的手机!
--运行手机通讯录!
-------------------------
运行品牌为N的手机
--运行手机游戏!
运行品牌为N的手机
--运行手机通讯录!
- 设计模式 – 桥接模式(Bridge)
- 桥接设计模式bridge
- 设计模式(10)-桥接模式(Bridge)
- 设计模式 Bridge 桥接模式
- Java设计模式-----Bridge桥接模式
- 设计模式--桥接模式(Bridge)
- 设计模式(12)-桥接模式(Bridge)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式学习----Bridge桥接模式
- 设计模式之-Bridge-- 桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式--桥接模式(bridge pattern)
- Java设计模式-----Bridge桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式7 - 桥接模式Bridge
- [设计模式]Bridge桥接模式
- 设计模式 – 命令模式(Command)
- 另一种爱的方式
- Windows下快速删除.svn文件夹的最简易方法
- 一个简单的Applet程序
- trade 最优贸易
- 设计模式 – 桥接模式(Bridge)
- 看懂这些故事 你做人就很成功了
- 关于带参数的main函数
- 设计模式 – 原型模式(Prototype)
- Ado.net 连接池相关
- 硬盘安装fedora 13.0
- C#动态加载卸载DLL
- 设计模式 – 单例模式(Singleton)
- POJ 1125 Stockbroker Grapevine