Bridge 模式
Bridge 模式将抽象和行为划分开来,各自独立,但能动态的结合。在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处。

///////////////Abstraction.h/////////////
#pragma once
class AbstractionImp ;
class Abstraction
{
public:
virtual ~Abstraction();
virtual void Operation() = ;
protected:
Abstraction();
private:
}; class RefinedAbstraction : public Abstraction
{
public:
~RefinedAbstraction();
RefinedAbstraction();
RefinedAbstraction(AbstractionImp* imp);
void Operation();
protected:
private:
AbstractionImp* _imp ;
};
///////////////Abstraction.cpp/////////////
#include "Abstraction.h"
#include "AbstractionImp.h"
Abstraction::~Abstraction()
{ }
Abstraction::Abstraction()
{ }
void Abstraction::Operation()
{ } RefinedAbstraction::~RefinedAbstraction()
{ }
RefinedAbstraction::RefinedAbstraction()
{ }
RefinedAbstraction::RefinedAbstraction(AbstractionImp* imp)
{
_imp = imp ;
}
void RefinedAbstraction::Operation()
{
_imp->Operation();
}
///////////////AbstractionImp.h/////////////
#pragma once
class AbstractionImp
{
public:
virtual ~AbstractionImp();
virtual void Operation() = ; protected:
AbstractionImp();
private:
}; class ConcreteAbstractionImpA : public AbstractionImp
{
public:
~ConcreteAbstractionImpA();
ConcreteAbstractionImpA();
void Operation();
protected:
private:
}; class ConcreteAbstractionImpB : public AbstractionImp
{
public:
~ConcreteAbstractionImpB();
ConcreteAbstractionImpB();
void Operation();
protected:
private:
};
///////////////AbstractionImp.cpp/////////////
#include "AbstractionImp.h"
#include <iostream>
using namespace std;
AbstractionImp::~AbstractionImp()
{ }
AbstractionImp::AbstractionImp()
{ }
void AbstractionImp::Operation()
{ }
ConcreteAbstractionImpA::~ConcreteAbstractionImpA()
{ }
ConcreteAbstractionImpA::ConcreteAbstractionImpA()
{ }
void ConcreteAbstractionImpA::Operation()
{
cout<<"ConcreteAbstractionImpA...."<<endl;
} ConcreteAbstractionImpB::~ConcreteAbstractionImpB()
{ }
ConcreteAbstractionImpB::ConcreteAbstractionImpB()
{ }
void ConcreteAbstractionImpB::Operation()
{
cout<<"ConcreteAbstractionImpB...."<<endl;
}
///////////////main.cpp/////////////
#include "Abstraction.h"
#include "AbstractionImp.h"
#include <iostream>
using namespace std ;
int main()
{
AbstractionImp* impA = new ConcreteAbstractionImpA();
Abstraction* abs = new RefinedAbstraction(impA);
abs->Operation();
system("pause");
return ;
}
Bridge 模式的更多相关文章
- Bridge模式——对象结构型模式
今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描述的类型,拆解开来,使其能沿着各维度 ...
- Abstract Server模式,Adapter模式和Bridge模式
简易的台灯 Abstract Server模式 谁拥有接口. 接口属于它的客户,而不是它的派生类. 接口和客户之间的逻辑关系,强于接口和其派生类的逻辑关系. 逻辑关系和实体关系的强度是不一致的.在实体 ...
- 【结构型】Bridge模式
桥接模式是为了将对象的抽象与实现分离,使得它们可以独立变化.简简单单的一句话,却已经是站在了更高抽象层面上来看待.设计.解决问题.平常我们多是对具体问题进行分析.抽象,然后就开始设计,这对多数情况下基 ...
- 【设计模式】Bridge模式(桥接模式)
最近的一次面试中,被问到桥接模式,以前呢并没有很仔细的研究过这个设计模式,借此机会剖析一下. 先给出自己对这个模式理解后的源码: interface A{ void methodA(); } inte ...
- 设计模式之桥接模式(Bridge模式)
我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根据想象描绘出格式图样.而毛笔下的国画更是工笔写意,各展风采.而今天我们的故事从蜡笔与毛笔说起. 设想要绘制一幅图画,蓝天.白云.绿树.小鸟 ...
- 设计模式之——bridge模式
Bridge模式,又叫桥接模式,是针对同一接口进行扩展与实现操作的一种设计模式. 这种模式,与之前学过的适配器模式具有相似的地方,也有不同的地方,下面就让我们一一解析吧. 首先,我们要了解到,为什么需 ...
- java 实现Bridge模式(转)
原文:http://chjking.blog.163.com/blog/static/6439511120081152534252/ 看了网上一些关于咖啡加奶的例子,觉得真是天下文章一大抄,不管好的坏 ...
- (原创)composite模式和bridge模式是天生的好朋友
composite模式的意图是:将对象组合成树形结构以表示“部分-整体”的层次结构.composite使得用户对单个对象和组合对象的使用具有一致性.它的类图如下: composite模式的实现分为透明 ...
- Java设计模式(6)桥模式(Bridge模式)
Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合. 为什么使用桥模式 通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以 ...
随机推荐
- 单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?
单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网? 配一个无线路由器就可以实现,将电脑IP配置成自动获取,找条网线一头插路由LAN口(路由器上有标明 ...
- Unity Twist Effect Black Hole
Shader "Hidden/Twist Effect" {Properties { _MainTex ("Base (RGB)", 2D) = "w ...
- 折腾iPhone的生活——我的越狱插件精品筛选
威锋上有人说的好,iOS系统越狱是为了装更多东西,安卓Root是为了删更多东西. 插件 众所周知,iOS系统是非常封闭的,基本上涉及到底层的功能在iOS上都不能实现,除非越狱装插件,所以插件就成为 ...
- Bzoj 2718: [Violet 4]毕业旅行 && Bzoj 1143: [CTSC2008]祭祀river 传递闭包,二分图匹配,匈牙利,bitset
1143: [CTSC2008]祭祀river Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1878 Solved: 937[Submit][St ...
- SPOJ 375 (树链剖分+线段树)
题意:一棵包含N 个结点的树,每条边都有一个权值,要求模拟两种操作:(1)改变某条边的权值,(2)询问U,V 之间的路径中权值最大的边. 思路:最近比赛总是看到有树链剖分的题目,就看了论文,做了这题, ...
- disconf实践(二)
因为有些系统的配置文件会随着业务更改,如某些控制开关,当大批量集群时,按照上一篇文章的配置就不够啦,需要做到热加载. 研究了一下,还好,比较简单,只要替换上一篇文章第4步的配置文件(spring-di ...
- 保证相同类型的MDI子窗体只会被打开一次的方法
本文转载:http://www.cnblogs.com/Ricky81317/archive/2008/09/17/1292443.html 看到论坛中有朋友问,如何可以保证在MDI主窗体中,同一类型 ...
- 阿里云 centos 部署javaweb 应用
今天在阿里云上部署了个javaweb应用,在此记录下步骤,以供下次使用. 服务器版本: 1.root登陆服务器 2.服务器安装FTP服务,或者直接使用winscp上传文件(简单),本文介绍安装FTP服 ...
- OC中类别、扩展、协议与托付
类别(category)--通过使用类别,我们能够动态地为现有的类加入新方法.并且能够将类定义模块化地分不到多个相关文件里.通常仅仅在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有&qu ...
- 通过WriteProcessMemory改写进程的内存
http://www.cnblogs.com/feiyucq/archive/2009/10/21/1587628.html 以PROCESS_ALL_ACCESS权限打开进程以后既能够使用ReadP ...