Bridge 桥接,对象结构型模式,将抽象部分与实现部分分离,使他们都可以独立的变化。
说句实话,我看《设计模式》的Bridge模式,看不懂,后来看了一个大杯、小杯的咖啡加不加奶的例子,看明白了Bridge模式的意图。
例子:
比如有个鞋店,有男鞋女鞋两种鞋(包括鞋和送的东西也可以选择不要),但是目前只送一个小熊玩具,以后会送的东西可以让你挑选。
可能刚开始这样设计:
但是后来,因为鞋子通过这样促销做的不错,准备送的东西品种多点,于是有加了个日记本
于是可能要这样的设计
店的生意很好,于是公司觉得这种促销很有效,于是有加了 送 杯子、相框、杂志、消费券
这时发现,类好像爆炸了一样,一下需要很多很多的子类。于是想想是不是一开始就把,鞋和送的东西分开呢?于是Bridge 模式就产生了。
注意,Addtion 和shoes 是一一对应的关系。
下面用As来实现一下。
Shoes.as
package {
public class Shoes {
public static const BEAR_ADDTION:String = "BearAddtion";
public static const BOOK_ADDTION:String = "BookAddtion";
public static const PHOTO_FRAME_ADDTION:String = "PhotoFrameaddtion";
private var addtion:Addtion;
public function Shoes(addtionType:String):void {
setAddtion(addtionType);
}
protected function setAddtion(addtionType:String):void {
if(addtionType == BEAR_ADDTION) {
addtion = new BearAddtion();
}
else if(addtionType == BOOK_ADDTION){
addtion = new BookAddtion();
}
else {
addtion = new PhotoFrameaddtion();
}
}
public function getAddtionInfo():void {
addtion.showInfo();
}
}
}
MaleShoes .as
package {
public class MaleShoes extends Shoes {
public function MaleShoes(addtionType:String) {
super(addtionType);
trace("MaleShoes");
}
}
}
FemaleShoes .as
package {
public class FemaleShoes extends Shoes {
public function FemaleShoes(addtionType:String) {
super(addtionType);
trace("FemaleShoes");
}
}
}
Addtion .as
package {
public class Addtion {
public function Addtion() {
}
public function showInfo():void {
throw new Error("showInfo");
}
}
}
BearAddtion .as
package {
public class BearAddtion extends Addtion {
public function BearAddtion():void {
}
override public function showInfo():void {
trace("added Bear");
}
}
}
BookAddtion .as
package {
public class BookAddtion extends Addtion {
public function BookAddtion():void {
}
override public function showInfo():void {
trace("added Book");
}
}
}
PhotoFrameaddtion .as
package {
public class PhotoFrameaddtion extends Addtion {
public function PhotoFrameaddtion():void {
}
override public function showInfo():void {
trace("added PhotoFrame");
}
}
通过对象组合的方式,Bridge模式把两个角色之间的继承关系改为了耦合的关系,从而使这两者可以从容自若的各自独立的变化,这也是Bridge模式的本意。
- 大小: 72 KB
- 大小: 84.6 KB
- 大小: 81.2 KB
分享到:
相关推荐
C#面向对象设计模式 Bridge 桥接模式 视频讲座下载
-C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式)
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) 体验课程
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) (Level 300)
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第8节:结构型模式Bridge桥接模式
Java调用IDL程序需要通过 IDL bridge来完成这一目的,该文件包括对IDL程序编写的规范格式示范,以及提供了本人编写的参考例子,提到在实现调用IDL过程中出现的一些错误以及解决方法。该资源中的word文件较为详细的...
FW150RM无线路由器怎么设置Bridge桥接模式?路由器设置Bridge桥接模式也可以对原来的无线网络信号进行扩展,让信号更强,解决无线信号覆盖不足、存在盲点等问题,下面我们来看看详细的设置方法
主要介绍了C++设计模式编程中使用Bridge桥接模式的完全攻略,Bridge将抽象部分与它的实现部分分离,使它们都可以独立地变化需要的朋友可以参考下
主要介绍了Linux bridge桥接两个VirtualBox虚拟网络的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
通过桥接转发方式共享网络,分别可以使用以下方式: 通过ETH0连接互联网,ETH1和wlan1作为下联转发eth0网络 通过wlan0连接互联网,ETH1和wlan1作为下联转发wlan0网络 通过ppp0连接互联网,ETH1和wlan1作为下联转发ppp0...
react-native-zendesk-sdk 在iOS和Android上将Native Bridge桥接到Zendesk SDK。React Native版本支持它仅经过测试可与React Native 0.47一起使用,可能适用于早期版本。入门通过RNPM安装(通用) react-native link...
23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...
2、Bridge 桥接 3、Composite 组合模式 4、Decorator装饰者 5、Façade 外观、门面 6、Flyweight 享元模式 7、Proxy 代理模式 11个行为模式: 1、Chain of Responsibility 职责链 2、Command 命令 3、...
该应用采用Java语言, 实现了用于解决类爆炸的Bridge模式 该代码是为一个游戏设置的一部分主体类 本游戏涉及到的人物有:武士,法师,英雄 本游戏设计到的装备: 普通披风,防水披风 该部分将具体实现简化后,供研究...
7、桥接模式(bridge) 用意:将抽象部分和实现部分分离,使他们可以独自变化
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式).rar