设计模式-桥接模式(Bridge)
桥接模式是构造型模式之一。把抽象(Abstraction)与行为实现(Implementor)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。
角色和职责:
1.抽象类(Abstraction)-Car:
维护对行为实现(Implementor)的引用
2.具体实现(Concrete Abstraction)-Bus、Jeep:
具体实现
3.行为类(Implementor)-Engine:
行为实现类接口
4.行为类具体实现(Concrete Implementor)-Engine2000、Engine2200:
行为类具体实现
UML图:

代码如下:
/**
* 行为:安装引擎
*/
public interface Engine {
void installEngine();//安装引擎
}
/**
* 行为:安装引擎2000
*/
public class Engine2000 implements Engine{
@Override
public void installEngine() {
System.out.println("安装引擎2000");
}
}
/**
* 行为:安装引擎2200
*/
public class Engine2200 implements Engine{
@Override
public void installEngine() {
System.out.println("安装引擎2200");
}
}
/**
* 汽车
*/
public abstract class Car {
protected Engine engine;//引擎的引用
public Car(Engine engine){
this.engine = engine;
}
public abstract void installEngine();
}
/**
* bus
*/
public class Bus extends Car{
public Bus(Engine engine) {
super(engine);
}
@Override
public void installEngine() {
System.out.print("bus:");
engine.installEngine();
}
}
/**
* jeep
*/
public class Jeep extends Car{
public Jeep(Engine engine) {
super(engine);
} @Override
public void installEngine() {
System.out.print("jeep:");
engine.installEngine();
}
}
public class Main {
public static void main(String[] args) {
Engine engine2000 = new Engine2000();//引擎2000
Engine engine2200 = new Engine2200();//引擎2200
Car bus2000 = new Bus(engine2000);//bus安装2000引擎
bus2000.installEngine();
Car bus2200 = new Bus(engine2200);//bus安装2200引擎
bus2200.installEngine();
Car jeep2000 = new Jeep(engine2000);//jeep安装2000引擎
jeep2000.installEngine();
Car jeep2200 = new Jeep(engine2200);//jeep安装2200引擎
jeep2200.installEngine();
}
}
结果:
bus:安装引擎2000
bus:安装引擎2200
jeep:安装引擎2000
jeep:安装引擎2200
源码地址:https://github.com/qjm201000/design_pattern_bridge.git
设计模式-桥接模式(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
#写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是 ...
随机推荐
- 基于Android开发的天气预报app(源码下载)
原文:基于Android开发的天气预报app(源码下载) 基于AndroidStudio环境开发的天气app -系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows1 ...
- String关于BeanFactory与ApplicationContext的简单区别
1.创建的方式不同 ApplicationContext: ApplicationContext context = new ClassPathXmlApplicationContext(" ...
- 如何清除XP的网络共享密码
一.利用NET命令 我们知道在Windows XP中提供了“net user”命令,该命令可以添加.修改用户账户信息,其语法格式为: net user [UserName [Password | *] ...
- qt 透明度设置(setWindowOpacity 和 setAutoFillBackground 和 带透明度的画刷填充就好了)
1,父窗口透明// 设置背景图片 QPalette pa;setAutoFillBackground(true);pa.setBrush(QPalette::Background,QBrush(QPi ...
- 通通WPF随笔(3)——艺术二维码素材生成器
原文:通通WPF随笔(3)--艺术二维码素材生成器 最近公司让我开发一个条形码的生成控件,花了半天时间搞定觉得不过瘾,什么年代了该用二维码了吧.于是wiki了一下二维码的资料. 比较常见的就是QR码( ...
- WPF最大化避免覆盖任务栏
原文:WPF最大化避免覆盖任务栏 WPF当窗体WindowStyle=”None”时,最大化会覆盖掉任务栏.如何解决这个问题呢? 我在Google里面搜到一篇文章,要用到Win32 API,通过让WP ...
- Linux学习之“exit函数”
先看下"_exit"和"exit": exit被调用时,将冲刷所有的标准I/O流,关闭所有打开的文件描述符.在传统实现中,同时也将关闭标准I/O流.即表示标准输 ...
- websocket协议学习
一 实验代码 client.html websocket_server.go package main import ( "crypto/sha1" "encoding/ ...
- Xdite:永葆热情的上瘾式学习法(套路王:每天总结自己,反省自己的作息规律,找到自己的幸运时间、幸运方法,倒霉时间、倒霉方法。幸运是与注意力挂钩的。重复才能让自己登峰造极,主动去掉运气部分来训练自己。游戏吸引自己的几个原因非常适合训练自己)good
版权声明 本文首发自微信公共帐号: 学习学习再学习(xiaolai-xuexi) 无需授权即可转载, 甚至无需保留以上版权声明: 转载时请务必注明作者. 以下是<共同成长社区>第 58 次 ...
- 解决C/C++程序执行一闪而过的方法(使用getchar,或者cin.get,不推荐system(“pause”))
简述 在VS编写控制台程序的时候,包括使用其他IDE(Visual C++)编写C/C++程序,经常会看到程序的执行结果一闪而过,要解决这个问题,可以在代码的最后加上system(“pause”).g ...