【设计模式】—— 桥接模式Bridge
前言:【模式总览】——————————by xingoo
模式意图
这个模式使用的并不多,但是思想确实很普遍。就是要分离抽象部分与实现部分。
实现弱关联,即在运行时才产生依赖关系。
降低代码之间的耦合。
模式结构

Abstraction 抽象部分的基类,定义抽象部分的基础内容。
RefinedAbstraction 抽象部分的扩充,用于对基类的内容补充,添加特定场景的业务操作。
Implementor 实现部分的基类,定义实现部分的基本内容。
ConcreteImplementor 具体的实现类。
应用场景
1 不希望在抽象和它的实现部分之间有一个固定的绑定关系
2 抽象部分以及实现部分都想通过子类生成一定的扩充内容
3 对一个抽象的实现部分的修改对客户不产生影响
代码结构
package com.xingoo.test;
/**
* 抽象类基类
* @author xingoo
*/
abstract class Abstraction{
abstract public void operation(Implementor imp);
}
/**
* 实现类 基类
* @author xingoo
*/
abstract class Implementor{
abstract public void operation();
}
/**
* 重新定义的抽象类
* @author xingoo
*/
class RefinedAbstraction extends Abstraction{
public void operation(Implementor imp){
imp.operation();
System.out.println("RefinedAbstraction");
}
}
/**
* 具体的实现类
* @author xingoo
*/
class ConcreteImplementorA extends Implementor{
public void operation() {
System.out.println("ConcreteImplementorA");
}
}
/**
* 具体的实现类
* @author xingoo
*/
class ConcreteImplementorB extends Implementor{
public void operation() {
System.out.println("ConcreteImplementorB");
}
}
public class test {
public static void main(String[] args){
RefinedAbstraction abstraction = new RefinedAbstraction();
abstraction.operation(new ConcreteImplementorA()); abstraction.operation(new ConcreteImplementorB());
}
}
运行结果
ConcreteImplementorA
RefinedAbstraction
ConcreteImplementorB
RefinedAbstraction
【设计模式】—— 桥接模式Bridge的更多相关文章
- 转:设计模式-----桥接模式(Bridge Pattern)
转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理 ...
- 设计模式 -- 桥接模式(Bridge)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------主要内容包括: 初始桥接模式 ...
- 大话设计模式--桥接模式 Bridge -- C++实现实例
1. 桥接模式: 将抽象部分与它的实现部分分离,使它们都可以独立的变化. 分离是指 抽象类和它的派生类用来实现自己的对象分离. 实现系统可以有多角度分类,每一种分类都有可能变化,那么把这种多角度分离出 ...
- 设计模式--桥接模式Bridge(结构型)
一.概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或者多个维度的变化,如何应对这种"多维度的变化",就可以利用桥接模式. 引例: 设想如果要绘制矩形.圆形.椭圆.正方形,我 ...
- [工作中的设计模式]桥接模式bridge
一.模式解析: 策略模式一节讲过,通过扩展持有者,使持有者形成抽象类,然后实现多个具体持有者,策略模式可以转化为桥接模式. 桥接模式定义为:将抽象部分与实现部分分离,使它们都可以独立的变化,在软件系统 ...
- C#设计模式——桥接模式(Bridge Pattern)
一.概述在软件开发中,我们有时候会遇上一个对象具有多个变化维度.比如对汽车对象来说,可能存在不同的汽车类型,如公共汽车.轿车等,也可能存在不同的发动机,如汽油发动机.柴油发动机等.对这类对象,可应用桥 ...
- 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern)
原文:乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) 作者:webabcd 介绍 ...
- 设计模式 -- 桥接模式(Bridge Pattern)
桥接模式 Bridge Pattern 结构设计模式 定义: 分离抽象部分和实现部分,使他们独立运行. 避免使用继承导致系统类个数暴增,可以考虑桥接模式. 桥接模式将继承关系转化为关联关系,减少耦合, ...
- 【设计模式】桥接模式 Bridge Pattern
开篇还是引用吕振宇老师的那篇经典的文章<设计模式随笔-蜡笔与毛笔的故事>.这个真是太经典了,没有比这个例子能更好的阐明桥接模式了,这里我就直接盗来用了. 现在市面上卖的蜡笔很多,各种型号, ...
- python 设计模式之桥接模式 Bridge Pattern
#写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是 ...
随机推荐
- k-center问题-学习
k-center问题: In graph theory, the metric k-center or metric facility location problem is a combinator ...
- 【webstorm】免费使用
http://idea.imsxm.com/ 测试过ok 后期追加(20180316更新为) http://idea.codebeta.cn/ 后期追加(20180502更新为) http ...
- 20155306 白皎 《网络攻防》 EXP8 Web基础
20155306 白皎 <网络攻防> EXP8 Web基础 一.问题回答 - 什么是表单 表单:一般用来收集用户的信息和反馈意见 表单包括两个部分:一部分是HTML源代码用于描述表单(例如 ...
- [CTSC2006]歌唱王国
[CTSC2006]歌唱王国 Tags:题解 题意 链接:在空串后不断随机添加字符,直到出现串\(S_i\)为止.求最终串的期望长度.\(\sum |S_i|\le 5*10^6\) 题解 以下内容来 ...
- QT要点
1. QT设计器最终会被解释为ui_**.h. 2. QString与init之间的转换: QString转int: bool bIsOk; int a = str.toInt( &bIsOk ...
- Linux常用rmp包网址
* HA:http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/ * Openstack:https://r ...
- spring 配置 线程池并使用 springtest 进行测试
在 applicationContext.xml 中配置spring线程池: <!-- 包路径扫描 --> <context:component-scan base-package= ...
- java 自定义异常输出信息(使用构造器)
throw new Exception("上传的脚本类型不匹配,当前只支持类unix系列的远程扫描,请上传后缀名为 .sh .pl 的脚本文件"); 这样就可以了,结合配置的异常信 ...
- 吉他软件Guitar Pro播放无声音的解决方法
系统环境:适用于Windows操作系统和macOS的Guitar Pro . 问题表现:已成功安装Guitar Pro ,但用Guitar Pro 播放时没有任何声音或播放失真. 解决方案:首先确保安 ...
- Inno Setup脚本
某天夜晚一场狂风暴雨,由于办公室座位旁的窗户没关,笔记本电脑泡了一夜水,无法开机,无奈送修,里面的大量资料也不知道会不会丢失. is的脚本只有重新写了,重新研究了一下检测程序是否正在运行的判断方法,另 ...