十一. 桥接模式
整理自 《java与模式》阎宏编著
1.意图:
将抽象化与实现化脱耦,使得两者可以独立地变化。
2.类图:
3.原理:
强关联:编译时期已经确定,无法在运行时期动态更改的关联。
弱关联:可以动态确定并在运行时期动态更改的关联。
继承关系是强关联,聚合关系是弱关联。
桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用合成/聚集关系而不是继承关系,即将强关联变成弱关联,从而使得两者可以相对独立地变化。
4.特征:
抽象化(Abstraction)角色:抽象化给出定义,并保存一个对实现化对象的引用。
修正抽象化(refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
实现化(Implementor)角色:给出实现化角色的接口,但不给出具体的实现。
具体实现化(Concrete Implementor)角色:给出实现化角色的具体实现。
抽象化角色可以通过向不同的实现化对象委派,来达到动态转换自己的功能的目的。可以动态地增加修正抽象化角色和具体实现化角色,而不用修改现有的代码,符合“开-闭”原则。
5.说明:
桥接模式是对可变化性封装和合成/聚集复用原则的极好例子。
6.使用案例:
Java 中的Look and feel。
驱动程序软件。
7.代码:
// Abstraction.java 抽象化(Abstraction)角色
public abstract class Abstraction
{
private Implementor impl;
protected Implementor getImplementor()
{
return impl;
}
public void operation()
{
getImplementor().operationImp();
}
}
// RefinedAbstraction.java 修正抽象化(refined Abstraction)角色
public class RefinedAbstraction extends Abstraction
{
//改进抽象化角色的实现
public void operation()
{
//improved logic
}
}
// Implementor.java 实现化(Implementor)角色
public abstract class Implementor
{
/**
* Implement this method to provide implementation-specific behavior
*/
public abstract void operationImp();
}
// ConcreteImplementorA.java 具体实现化(Concrete Implementor)角色A
public class ConcreteImplementorA extends Implementor
{
/** @see bridge.Implementor#operationImp()*/
public void operationImp()
{
// provide implementation here
}
}
// ConcreteImplementorB.java 具体实现化(Concrete Implementor)角色B
public class ConcreteImplementorB extends Implementor
{
/** @see bridge.Implementor#operationImp()*/
public void operationImp()
{
// provide implementation here
}
}
分享到:
相关推荐
VMware 15虚拟机桥接模式无法上网问题 步骤 1:在设置中找到 网络和internet—>>更改适配器选项—–>>以太网 查看 共享网络给虚拟机(有些电脑不用) 步骤2:查看VMware虚拟网络编辑器的VMnet0桥接模式设置 ...
所有模式都可分为类模式和对象模式两种,类模式是继承,对象模式是委托,而桥接模式和策略模式都是将任务委托给另外一个接口去实现,那么两者的区别什么呢?
Bridge 桥接模式(结构型模式)视频
图片浏览器的接口设计-桥接模式的运用 解决问题: 一个图像格式有两个基本的方面,一是结构,二是表象。其结构决定了图像是怎样存储的,而其表象决定了图像是怎样显示在屏幕上的。对于一个图像格式(BMP、JPG等)来...
利用桥接模式完成以下实例: 1、编辑与作者。出版社的编辑负责策划图书,并遴选作者完成图书的编著,然后根据图书的印张发布图书。作者负责完成图书的编著工作。 2、模拟毛笔:现需要提供大中小3种型号的画笔,...
桥接模式 桥接模式
桥接模式 C++ 实现
VMWare 6.0桥接模式虚拟机网络配置
设计模式 java 桥接模式
桥接模式的例子源码。这个源码因完成仓促,仅用来解释说明桥接模式含义,代码规范稍有欠缺,仅供参考。
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) 体验课程
桥接模式和装饰模式,设计模式实验报告,BlueJ
设计模式专题之(十)桥接模式---设计模式桥接模式示例代码(python--c++)
设计模式-桥接模式(讲解及其实现代码)
设计模式 - 桥接模式
设计模式的桥接模式的例子,希望对大家有用
桥接模式通过将抽象部分和代码部分相分离,使之沿各自的维度变化而不互相影响,使用的时候通过对象参数进行连接,参数可进行变化
桥接模式的示例代码和文档,学习桥接模式的参考资料。
Android桥接模式demo,同步文章地址:http://blog.csdn.net/qq_28690547/article/details/51144783
海尔(Haier)、TCL、海信(Hisense)桥接模式