设计模式读书笔记:Bridge(桥接)

原创 2015年07月10日 15:53:47

意图:

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

结构图:来自 《23种设计模式 - 郗晓勇》


实现:https://github.com/panshiqu/patterns/tree/master/Bridge

Implementor

namespace NS_BRIDGE {

class Implementor {
public:
	Implementor() {}
	virtual ~Implementor() {}
	virtual void operationImp(void) = 0;
};

} /* namespace NS_BRIDGE */
ConcreteImplementorA

#include "Implementor.h"
#include <iostream>

namespace NS_BRIDGE {

class ConcreteImplementorA : public Implementor
{
public:
	ConcreteImplementorA() {}
	virtual ~ConcreteImplementorA() {}
	virtual void operationImp(void)
	{
		std::cout << "ConcreteImplementorA" << std::endl;
	}
};

} /* namespace NS_BRIDGE */
ConcreteImplementorB

#include "Implementor.h"
#include <iostream>

namespace NS_BRIDGE {

class ConcreteImplementorB : public Implementor
{
public:
	ConcreteImplementorB() {}
	virtual ~ConcreteImplementorB() {}
	virtual void operationImp(void)
	{
		std::cout << "ConcreteImplementorB" << std::endl;
	}
};

} /* namespace NS_BRIDGE */
Abstraction

#include "Implementor.h"

namespace NS_BRIDGE {

class Abstraction {
public:
	Abstraction(Implementor *imp) : _imp(imp) {}
	virtual ~Abstraction() {}
	virtual void operation(void)
	{
		_imp->operationImp();
	}

private:
	Implementor *_imp;
};

} /* namespace NS_BRIDGE */
main

#include "Bridge/Abstraction.h"
#include "Bridge/ConcreteImplementorA.h"
#include "Bridge/ConcreteImplementorB.h"
using namespace NS_BRIDGE;
int main(void)
{
	// 可以使用Abstract Factory创建实现
	// 如此以来这段代码将不依赖或需要知道任何实现
	ConcreteImplementorA ia;
	Abstraction abs(&ia);
	abs.operation();
}
附加:
版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS 设计模式 桥接模式(bridge)

转自:http://www.cnblogs.com/eagle927183/p/3483890.html 引言   在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多...
  • lcg910978041
  • lcg910978041
  • 2016年04月23日 21:12
  • 521

浅谈JAVA设计模式之——桥接模式(Bridge)

一、概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 二、适用性 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者...
  • l1028386804
  • l1028386804
  • 2015年05月03日 12:25
  • 5417

IOS设计模式浅析之桥接模式(Bridge)

引言   在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多个维度的变化,比如说大话设计模式书中所说的手机,它有两个变化的维度:一是手机的品牌,可能有三星、苹果等;...
  • cctvzxxz1
  • cctvzxxz1
  • 2014年10月15日 20:51
  • 3363

设计模式——桥接模式(BridgeMode)

要想正确理解设计模式,首先必须明确它是为了解决什么问题而提出来的。 设计模式学习笔记 ——Shulin 转载请注明出处:http://blog.csdn.net/zhshulin ...
  • u012909091
  • u012909091
  • 2014年01月06日 22:54
  • 2205

Python设计模式——桥接模式

桥接模式(Bridge Pattern)用于将”抽象”(abstraction, 比如接口或算法)与实现方式相分离。如果不用桥接模式,那么通常的写法是,创建若干个基类,用于表示各种抽象方式,然后从每个...
  • qingyunianer
  • qingyunianer
  • 2015年03月10日 22:50
  • 572

C++设计模式实现--桥接(Bridge)模式

一. 举例 N年前: 计算机最先出来时,软件和硬件是一绑在一起的,比如IBM出了一台电脑,上面有一个定制的系统,假如叫 IBM_Win,这个IBM_Win系统当然不能在HP电脑上运行,...
  • L_Andy
  • L_Andy
  • 2014年06月18日 10:58
  • 1384

python设计模式之桥接模式

桥接模式这个模式其实就是把产品类的实现和抽象类分离,能够灵活的变化,假如你记得状态模式,它是修改内部属性, 而桥接模式是指定好内部属性,每个产品类指定这个属性被桥接模式类调用,适用于产品类可能经常调整...
  • leongongye
  • leongongye
  • 2015年07月29日 18:05
  • 317

设计模式(结构型)之桥接模式(Bridge Pattern)

桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在多个独立变化的维度,通过该模式可以将这多个维度分离出来,使他们可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将多个独...
  • yanbober
  • yanbober
  • 2015年04月29日 21:15
  • 3710

软件设计模式——桥接模式(Bridge)

定义与结构GOF 在《设计模式》中给桥接模式的定义为:将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里的抽象部分和实现部分不是我们通常认为的父类与子类、接口与实现类的关系,而是组合关系。也就...
  • Jungle_hello
  • Jungle_hello
  • 2016年04月18日 09:57
  • 661

Swift-桥接模式(Bridge Pattern)

桥接模式 1:桥接模式的目的是把抽象层次结构从其实现中分离出来,使其能够独立变更。 2:抽象层定义了供客户端使用的上层的抽象接口。实现层次结构定义了抽象层次使用的底层接口。 3:实现类的引用被封...
  • longshihua
  • longshihua
  • 2016年10月31日 16:37
  • 816
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式读书笔记:Bridge(桥接)
举报原因:
原因补充:

(最多只允许输入30个字)