
设计模式之桥接模式
发布日期:2021-05-07 15:14:42
浏览次数:18
分类:原创文章
本文共 1421 字,大约阅读时间需要 4 分钟。
目录
桥接模式bridge
概念
- Bridge 模式又叫做桥接模式,是构造型的设计模式之一。
- Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。
- 它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。
角色和职责
- Client
- Bridge模式的使用者
- Abstraction
- 抽象类接口(接口或抽象类)维护对行为实现(Implementor)的引用
- Refined Abstraction
- Abstraction子类
- Implementor
- 行为实现类接口 (Abstraction接口定义了基于Implementor接口的更高层次的操作)
- ConcreteImplementor
- Implementor子类
- Implementor子类
- 适用于:
- 桥接模式(Bridge Pattern)是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化。
- 车 安装 发动机 ;不同型号的车,安装不同型号的发动机
- 图形 填 颜色 不同形状的图形,填充上 不同的颜色
- 将“车 安装 发动机”这个抽象 和 实现进行分离;两个名字 就设计两个类;
- 将“图形 填 颜色”这个抽象 和 实现 进行分离,两个名字,就设计两个类
- 桥接模式(Bridge Pattern)是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化。
案例
//需要把“安装发动机”这个事,做很好的分解;把抽象 和 行为实现 分开//发动机是一个名次,专门抽象成一个类;类中含有一个成员函数,安装发动机class Engine{public: virtual void installEngine() = 0;};class Engine4000 : public Engine{public: virtual void installEngine() { cout << "安装发动机 Engine4000" << endl; }};class Engine3500 : public Engine{public: virtual void installEngine() { cout << "安装发动机 Engine 3500" << endl; }};class Car{public: Car(Engine *pengine) { m_engine = pengine; } virtual void installEngine() = 0;protected: Engine *m_engine;};class BMW7 :public Car{public: BMW7(Engine *p) : Car(p) { } //注意车的安装 和 发动机的安装 不同之处 virtual void installEngine() { cout << "BMW7 " ; m_engine->installEngine(); }protected:private:};void main163(){ Engine4000 *e4000 = new Engine4000; BMW7 *bmw7 = new BMW7(e4000); bmw7->installEngine(); delete bmw7; delete e4000;}void main(){ main163(); system("pause");}
【注】参考传智扫地僧C++设计模式
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月11日 05时09分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
2019-03-04
U盘“无法识别的USB设备”解决办法
2019-03-04
【springmvc】传值的几种方式&&postman接口测试
2019-03-04
泳道图简介
2019-03-04
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
2019-03-04
Java判断字符串是否为金额
2019-03-04
CodeCombat代码全记录(Python学习利器)--安息之云山峰(第四章)代码9
2019-03-04
某公司运维岗位笔试题8
2019-03-04
skyfans之每天一个Liunx命令系列之二:uptime
2019-03-04
Kubernetes十三--Pod定义文件内容详解
2019-03-04
3、69道Spring面试题及答案
2019-03-04
普歌- LRF-(简单易懂)笔记本电脑USB接口案例 接口多态(向下转型)
2019-03-04
Java中如何构建树结构
2019-03-04
若依启动流程
2019-03-04
解决vue部署到nginx后刷新404
2019-03-04
解决eclipse字体背景变红或者变绿的问题
2019-03-04
一个面试大牛的经历
2019-03-04
扫雷小游戏——简单易懂
2019-03-04
软件架构-zookeeper快速入门
2019-03-04