桥梁模式(Bridge)
桥梁模式属于结构类的设计模式,示意结构图如下:
aaarticlea/png;base64,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" alt="" />
桥梁模式所涉及的角色有:
● 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
● 修正抽象化(RefinedAbstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
● 实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
● 具体实现化(ConcreteImplementor)角色:这个角色给出实现化角色接口的具体实现。
关键点:
1、抽象化角色可以通过向不同的实现化对象委派达到动态转换自己的目的
2、抽象化角色和实现化角色之间是聚合关系,而不是继承关系
如果 一个类需要知道另一个类的属性和方法,可以选择继承,也可以选择组合(聚合),在使用组合时,则需要持有对方的引用
以一个万能遥控的例子说明该模式的应用:(为了在同一个文件共存,代码中类前面的public都省略了)
package designpatterns.strucural; //抽象角色--Abstraction
abstract class AbstractRemoteControl { protected ITV tv; public void bindImpl(ITV tv){
this.tv = tv;
} public void turnOn(){
tv.on();
} public void turnOff(){
tv.off();
} public void setChannel(int channel){
tv.switchChannel(channel);
}
}
//精确抽象角色--RefinedAbstraction
class PcRemoteControl extends AbstractRemoteControl { @Override
public void turnOn() {
System.out.println("Pc On");
}
} class CommonRemoteControl extends AbstractRemoteControl{ @Override
public void turnOn() {
super.turnOn();
} @Override
public void turnOff() {
super.turnOff();
} @Override
public void setChannel(int channel) {
super.setChannel(channel);
}
} //实现角色--mplementor
/*
* 首先定义电视机的接口:ITV*/
interface ITV { public void on();
public void off();
public void switchChannel(int channel);
}
//具体实现角色--ConcreteImplementor1
/*
* 再实现三星的ITV接口。*/
class SamsungTV implements ITV {
@Override
public void on() {
System.out.println("Samsung is turned on.");
} @Override
public void off() {
System.out.println("Samsung is turned off.");
} @Override
public void switchChannel(int channel) {
System.out.println("Samsung: channel - " + channel);
}
}
//具体实现角色--ConcreteImplementor2
/*
* 再实现索尼的ITV接口。*/
class SonyTV implements ITV { @Override
public void on() {
System.out.println("Sony is turned on.");
} @Override
public void off() {
System.out.println("Sony is turned off.");
} @Override
public void switchChannel(int channel) {
System.out.println("Sony: channel - " + channel);
}
} //测试类
public class Bridge {
public static void main(String[] args){
ITV tv1 = new SonyTV();
ITV tv2 = new SamsungTV(); AbstractRemoteControl control = new CommonRemoteControl();
control.bindImpl(tv1);
control.turnOn();
control.bindImpl(tv2);
control.turnOn(); AbstractRemoteControl control_pc = new PcRemoteControl();
control_pc.turnOn();
}
}
验证输出:
Sony is turned on.
Samsung is turned on.
Pc On
代码说明:
抽象化角色:远程控制,通过持有ITV接口实例,达到对电视万能控制
修正抽象化角色:pc的远程控制,有朝一日,电视消失了,证明抽象化角色还可以复用
实现化角色:ITV ,这个可以定义为抽象类,也可以定义为接口,个人倾向定义为接口,毕竟代码量少
具体实现化角色:各品牌的电视
何时持有对方引用?
阎宏博士java与模式一书省略了这一点,不少博客的例子是通过构造函数传参的方式获取对方引用,也许是为了图省事儿
我觉得恰是这些省略让人不太好体会这个模式的特点,因为这么干就说不清楚和抽象工厂模式的区别了,像下面的代码
Animal A = new cat()
A.run()
Animal B = new dog()
B.run()
持有对方引用通过调用一个普通方法
public void bindImpl(ITV tv){
this.tv = tv;
}
这样就只需要有一个实例,通过绑定不同的实现化对象,达到动态转换自己功能
类似于现实中,你有一个万能遥控器,通过点击某个电视品牌,你就能实现对具体电视的控制
参考:
桥梁模式(Bridge)的更多相关文章
- 桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
桥接模式Bridge Bridge 意为桥梁,桥接模式的作用就像桥梁一样,用于把两件事物连接起来 意图 将抽象部分与他的实现部分进行分离,使得他们都可以独立的发展. 意图解析 依赖倒置原 ...
- 说说设计模式~桥梁模式(Bridge)
返回目录 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度? ...
- java设计模式之桥梁模式(Bridge)
1.桥梁模式 与 策略模式 非常相似 (其实很多设计模式都相似,因为所有的模式都是按照设计原则 而设计出来的,设计原则就相当于武功的心法,设计模式就是招式,只要心法过硬,就可以无招胜有招了.) 这里也 ...
- 变脸不变质的桥梁模式(Bridge Pattern)
有一哥们是搞山寨货的,什么流行就搞什么.自己有个厂子,前些时间服装挣钱,就生产衣服,如今搞手机挣钱,搞手机,这哥们非常聪明,就换了个产品,工人,厂房都不变.他是怎么做到的?用类图来模拟一下: 由类图能 ...
- 桥梁模式(Bridge Pattern)
桥梁模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式.桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation) ...
- 24种设计模式--桥梁模式【Bridge Pattern】
今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富,其实是什么公司我倒是不关心,我关心的是是不是在赚钱,赚了多少, ...
- 设计模式C++学习笔记之十一(Bridge桥梁模式)
桥梁模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化.实现分离的办法就是增加一个类, 11.1.解释 main(),客户 IProduct,产品接口 CHouse,房子 CIPod,ip ...
- 代理(Proxy)模式 ,桥梁(Bridge)模式
一:代理模式 1 根据名字我们就可以理解为:代替别人管理 2 什么情况下使用代理模式呢? 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系 ...
- Java设计模式(13)——结构型模式之桥梁模式(Bridge)
一.概述 概念 将抽象与实现脱耦,使得抽象和实现可以独立运行 UML图 角色: 角色关系 二.实践 按照上面的角色建立相应的类 抽象化角色 /** * 抽象化角色 * * @author Admini ...
随机推荐
- 用Web API Client 调用 Web API
安装Web API客户端库 右键单击项目,选择管理 NuGet程序包,选择联机选项,选择全部,在搜索框中输入“Microsoft.AspNet.WebApi.Client”, 搜索结果就是要安装的类库 ...
- 解决Jquery Ajax提交 服务器端接收中文乱码问题
看到有朋友说到用post提交方式解决,我指定了methord="post",仍然解决不了, 说一下解决办法,客户端进行编码,服务器端解码, 客户端:var where = esca ...
- AES + RSA + Hash 实现 C-S 安全交互
概述 AES 由于其执行速度快,易于硬件实现,破解难度大等优势,被广泛用于数据的加密. 既然是对称加密,那如何保证秘钥的安全传输?很容易想到用 RSA 加密秘钥.由于只能用私钥解密,而私钥不需要交互双 ...
- mysql导入慢
MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时.在导出时合理使用几个参数,可以大大加快导 入的速度. -e 使用包括几个VALUES列表的多行INSE ...
- python-创建一个登录判断的函数
方法一def account_login(): password = input('Password:') if password == '12345': print('Login success!' ...
- jquery cookie操作方法
1. 设置cookie的值,把name变量的值设为value $.cookie(’name’, ‘value’); 2.新建一个cookie 包括有效期 路径 域名等 $.cookie(’n ...
- log4cxx在linux下的编译使用
最近在linux下使用log4cxx库,按照其官方文档提供的方法来进行编译,不能成功,又利用google搜索了好几个中文博客上讲述在linux下编译使用log4cxx库的方法,依然不能成功,在这里我奉 ...
- C语言中的传值调用
在c语言中每个变量都有两个属性一个是值,一个是址. 比方: int a = 2; 变量a的值是2,变量a的地址,能够用&取地址操作符获取,即&a. 因此以C语言的函数传递中具备两种方式 ...
- iOS开发 -李洪强-清除缓存
// // SetViewController.m // dfhx // // Created by dfhx_iMac_001 on 16/4/5. // Copyright © 2016年 ...
- 【问题记录】mybatis开启事务方法时,一级缓存可能引发的问题
首先,上代码: public void listMybatisModel() { List<MybatisModel> mybatisModels = mapper.listMybatis ...