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 桥接模式 视频讲座下载
桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在软件工程中,这种分离有助于降低复杂性,提高代码的可维护性和可扩展性。桥接模式的核心...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第8节:结构型模式Bridge桥接模式
桥接模式(Bridge Pattern)是面向对象设计中的一种结构型模式,它将抽象部分与实现部分分离,使得它们可以独立地进行变化。在C#编程中,桥接模式的应用能够帮助我们更好地解耦系统,提高代码的灵活性和可扩展性。 ...
桥接模式(Bridge Pattern)是一种结构型设计模式,它旨在将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在C#编程中,这种模式尤其有用,因为随着软件系统的复杂性增加,类的继承层次可能会变得难以管理...
Java调用IDL程序需要通过 IDL bridge来完成这一目的,该文件包括对IDL程序编写的规范格式示范,以及提供了本人编写的参考例子,提到在实现调用IDL过程中出现的一些错误以及解决方法。该资源中的word文件较为详细的...
1. 安装与集成:首先,你需要将下载的"Quixel Bridge与unity的桥接插件.rar"文件解压,然后按照指示安装Quixel Bridge应用程序。接着,在Unity项目中导入相应的Unity插件包,通常是通过将包含的`.unitypackage`文件...
Bridge桥接模式是一种网络连接方式,它允许两个或多个网络设备,如路由器或计算机,通过无线或有线连接共享同一网络,从而扩大网络覆盖范围。FW150RM无线路由器支持Bridge模式设置,使得它可以作为主路由器的延伸,...
Linux bridge桥接技术是一种网络虚拟化技术,常用于虚拟机环境,可以将多个虚拟网络连接在一起,实现网络之间的通信。VirtualBox是一款开源的虚拟机软件,支持创建和运行虚拟机,它提供了多种虚拟网络类型,例如...
react-native-zendesk-sdk 在iOS和Android上将Native Bridge桥接到Zendesk SDK。React Native版本支持它仅经过测试可与React Native 0.47一起使用,可能适用于早期版本。入门通过RNPM安装(通用) react-native link...
通过桥接转发方式共享网络,分别可以使用以下方式: 通过ETH0连接互联网,ETH1和wlan1作为下联转发eth0网络 通过wlan0连接互联网,ETH1和wlan1作为下联转发wlan0网络 通过ppp0连接互联网,ETH1和wlan1作为下联转发ppp0...
桥接模式(Bridge Pattern)是一种设计模式,它旨在将抽象部分和其实现部分分离,使得这两部分可以独立地进行变化。在C++编程中,桥接模式能够帮助开发者更好地管理和扩展复杂的类结构,减少类之间的耦合度。下面将...
Bridge 桥接是一种让虚拟机和物理网卡之间建立桥接的方式,使虚拟机和物理网卡处于同一 IP 网段中。在桥接时,VMWare 会虚拟一块网卡和真正的物理网卡进行桥接,这样,发到物理网卡的所有数据包就到了 VMWare 虚拟机...
"opc_bridge桥接软件"很可能就是这个工具的执行文件,可能包含OPC客户端和服务器的桥接逻辑、权限管理模块以及跨系统通信的实现。用户可能需要运行这个程序,并根据自己的需求进行配置,以连接到目标OPC服务器并传递...
23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...
在虚拟化环境中,如 VMware,连接 CentOS 7 系统有三种主要的网络模式:Bridge 桥接模式、NAT 模式和 Host-only 仅主机模式。这些模式决定了虚拟机如何与物理主机以及外部网络进行通信。 **Bridge 桥接模式**: 在...