`

Bridge 桥接

阅读更多

 

 

 

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
分享到:
评论

相关推荐

    Bridge 桥接模式

    C#面向对象设计模式 Bridge 桥接模式 视频讲座下载

    Bridge 桥接模式(结构型模式)

    桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在软件工程中,这种分离有助于降低复杂性,提高代码的可维护性和可扩展性。桥接模式的核心...

    C#面向对象设计模式纵横谈\8 结构型模式Bridge桥接模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第8节:结构型模式Bridge桥接模式

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式)

    桥接模式(Bridge Pattern)是面向对象设计中的一种结构型模式,它将抽象部分与实现部分分离,使得它们可以独立地进行变化。在C#编程中,桥接模式的应用能够帮助我们更好地解耦系统,提高代码的灵活性和可扩展性。 ...

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) (Level 300)

    桥接模式(Bridge Pattern)是一种结构型设计模式,它旨在将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在C#编程中,这种模式尤其有用,因为随着软件系统的复杂性增加,类的继承层次可能会变得难以管理...

    Java调用IDL程序(IDL Bridge桥接方法)

    Java调用IDL程序需要通过 IDL bridge来完成这一目的,该文件包括对IDL程序编写的规范格式示范,以及提供了本人编写的参考例子,提到在实现调用IDL过程中出现的一些错误以及解决方法。该资源中的word文件较为详细的...

    Quixel Bridge与unity的桥接插件.rar

    1. 安装与集成:首先,你需要将下载的"Quixel Bridge与unity的桥接插件.rar"文件解压,然后按照指示安装Quixel Bridge应用程序。接着,在Unity项目中导入相应的Unity插件包,通常是通过将包含的`.unitypackage`文件...

    FW150RM无线路由器怎么设置Bridge桥接模式?

    Bridge桥接模式是一种网络连接方式,它允许两个或多个网络设备,如路由器或计算机,通过无线或有线连接共享同一网络,从而扩大网络覆盖范围。FW150RM无线路由器支持Bridge模式设置,使得它可以作为主路由器的延伸,...

    Linux bridge桥接两个VirtualBox虚拟网络的方法步骤

    Linux bridge桥接技术是一种网络虚拟化技术,常用于虚拟机环境,可以将多个虚拟网络连接在一起,实现网络之间的通信。VirtualBox是一款开源的虚拟机软件,支持创建和运行虚拟机,它提供了多种虚拟网络类型,例如...

    react-native-zendesk-sdk:在iOS和Android上将Native Bridge桥接到Zendesk SDK

    react-native-zendesk-sdk 在iOS和Android上将Native Bridge桥接到Zendesk SDK。React Native版本支持它仅经过测试可与React Native 0.47一起使用,可能适用于早期版本。入门通过RNPM安装(通用) react-native link...

    网络桥接后通过iptables网络转发例子

    通过桥接转发方式共享网络,分别可以使用以下方式: 通过ETH0连接互联网,ETH1和wlan1作为下联转发eth0网络 通过wlan0连接互联网,ETH1和wlan1作为下联转发wlan0网络 通过ppp0连接互联网,ETH1和wlan1作为下联转发ppp0...

    C++设计模式编程中使用Bridge桥接模式的完全攻略

    桥接模式(Bridge Pattern)是一种设计模式,它旨在将抽象部分和其实现部分分离,使得这两部分可以独立地进行变化。在C++编程中,桥接模式能够帮助开发者更好地管理和扩展复杂的类结构,减少类之间的耦合度。下面将...

    vmware虚拟机的三种联网方法及原理

    Bridge 桥接是一种让虚拟机和物理网卡之间建立桥接的方式,使虚拟机和物理网卡处于同一 IP 网段中。在桥接时,VMWare 会虚拟一块网卡和真正的物理网卡进行桥接,这样,发到物理网卡的所有数据包就到了 VMWare 虚拟机...

    OPC桥接小软件实现跨系统通讯

    "opc_bridge桥接软件"很可能就是这个工具的执行文件,可能包含OPC客户端和服务器的桥接逻辑、权限管理模块以及跨系统通信的实现。用户可能需要运行这个程序,并根据自己的需求进行配置,以连接到目标OPC服务器并传递...

    23种Python设计模式示例演示源码包.rar

    23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...

    链接centos7的三种方法1

    在虚拟化环境中,如 VMware,连接 CentOS 7 系统有三种主要的网络模式:Bridge 桥接模式、NAT 模式和 Host-only 仅主机模式。这些模式决定了虚拟机如何与物理主机以及外部网络进行通信。 **Bridge 桥接模式**: 在...

Global site tag (gtag.js) - Google Analytics