博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之十八:桥接模式(Bridge)
阅读量:5733 次
发布时间:2019-06-18

本文共 1652 字,大约阅读时间需要 5 分钟。

桥接模式:

将抽象部分和它的实现部分相分离开来,以使它们能够单独地变化。

UML图:

这里写图片描写叙述

主要包含:

  1. Abstraction:定义了抽象部分的接口。操作一个实现部分对象的引用。

  2. RefinedAbstraction:继承自抽象部分的类。
  3. Implementor:实现部分的接口。
  4. ConcreteImplementor:实现了Implementor定义的接口的详细类。

C++代码例如以下:

#include 
using namespace std;class Implementor{ public: virtual void operationImpl()=0;};class ConcreteImplementorA:public Implementor{ public: void operationImpl() { cout<<"ConcreteImplementorA::operationImpl"<
operationImpl(); }};int main(){ cout<<"桥接模式样例"<
setImplementor(cia); ab->operation(); Implementor * cib=new ConcreteImplementorB(); ab->setImplementor(cib); ab->operation(); delete cia; delete cib; delete ab; return 0;}

运行输出:

这里写图片描写叙述


以下是一个详细的样例,看这个详细的样例可能好理解一些,摘自大话设计模式:

  1. Abstraction为Phone(手机)。
  2. RefinedAbstraction为Samsung(三星手机)。Huawei(华为手机)。
  3. Implementor为Game(手机游戏)。
  4. ConcreteImplementor为NeedForSpeed(极品飞车)。QQGame(QQ游戏),FruitNinjia(水果忍者)。

UML类图为:

这里写图片描写叙述

C++代码:

#include 
using namespace std;class Game{ public: virtual void play()=0;};class NeedForSpeed :public Game{ public: virtual void play() { cout<<"need for speed play"<
play(); }};class HuaWei:public Phone{ public: virtual void run() { cout<<"HuaWei :"; game->play(); }};int main(){ cout<<"桥接模式真实的样例,不同的手机品牌和手机游戏"<
setGame(qqGame); samsung->run(); huawei->setGame(needForSpeed); huawei->run(); samsung->setGame(fruit); samsung->run(); delete samsung; delete huawei; delete needForSpeed; delete qqGame; delete fruit; return 0;}

运行输出:

这里写图片描写叙述

你可能感兴趣的文章
redis 命令
查看>>
linux中安装mysql
查看>>
python的开发环境
查看>>
[转载]大数据存取的选择:行存储还是列存储?
查看>>
ArcticCore重构-问题列表1
查看>>
PAT 1093 Count PAT's[比较]
查看>>
Py-lamda表达式学习【转载】
查看>>
冒泡排序原理
查看>>
C#当中利用Attribute实现简易AOP
查看>>
剑指Offer 61 扑克牌中的顺子
查看>>
1-1Controller之Request
查看>>
机器学习(Machine Learning)&深度学习(Deep Learning)资料
查看>>
Apache搭建多个站点方法详解
查看>>
20050523:内容管理 通宵
查看>>
Intent数据清理
查看>>
sql数据库log自动增长被取消
查看>>
20150921css2
查看>>
A simple script to get all pictures
查看>>
Django--ORM和单表查询
查看>>
ubuntu 运行apt-get 时遇到“ Hash Sum mismatch ” waring
查看>>