设计模式-Bridge(结构型模式)-用于客户需求较多,频繁对类进行添加修改的情形,将抽象类与具体实现类分开

以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码

//AbstractionImp.h

#pragma once
class AbstractionImp
{
public:
    virtual ~AbstractionImp();
    virtual void Operation() = 0;
protected:
    AbstractionImp();
private:
};

class ConcreateAbstractionImpA :public AbstractionImp
{
public:
    ConcreateAbstractionImpA();
    ~ConcreateAbstractionImpA();
    virtual void Operation();
protected:
private:
};

class ConcreateAbstractionImpB :public AbstractionImp
{
public:
    ConcreateAbstractionImpB();
    ~ConcreateAbstractionImpB();
    virtual void Operation();
protected:
private:
};

//Abstraction.cpp

#include"AbstractionImp.h"
#include<iostream>
AbstractionImp::AbstractionImp(){}
AbstractionImp::~AbstractionImp(){}
void AbstractionImp::Operation()
{
    std::cout << "AbstractionImp..." << std::endl;
}
ConcreateAbstractionImpA::ConcreateAbstractionImpA(){}
ConcreateAbstractionImpA::~ConcreateAbstractionImpA(){}
void ConcreateAbstractionImpA::Operation()
{
    std::cout << "ConcreateAbstractionImpA..." << std::endl;
}
ConcreateAbstractionImpB::ConcreateAbstractionImpB(){}
ConcreateAbstractionImpB::~ConcreateAbstractionImpB(){}
void ConcreateAbstractionImpB::Operation()
{
    std::cout << "ConcreateAbstractionImpB..." << std::endl;
}

//Abstraction.h

#pragma once
class AbstractionImp;
class Abstraction {
public:
    virtual ~Abstraction();
    virtual void Operation() = 0;
protected:
    Abstraction();
private:

};
class RefinedAbstraction :public Abstraction
{
public:
    RefinedAbstraction(AbstractionImp* imp);
    ~RefinedAbstraction();
    void Operation();
protected:
private:
    AbstractionImp* _imp;
};

//Abstraction.cpp

#include"Abstraction.h"
#include"AbstractionImp.h"
#include<iostream>

Abstraction::Abstraction(){}
Abstraction::~Abstraction(){}
RefinedAbstraction::RefinedAbstraction(AbstractionImp* imp)
{
    _imp = imp;
}
RefinedAbstraction::~RefinedAbstraction(){}
void RefinedAbstraction::Operation()
{
    _imp->Operation();
}

//main.cpp

#include"Abstraction.h"
#include"AbstractionImp.h"
#include<string>

int main(int args, char* argv)
{
    AbstractionImp* impA = new ConcreateAbstractionImpA();
    Abstraction* abs = new RefinedAbstraction(impA);
    abs->Operation();
    AbstractionImp* impB = new ConcreateAbstractionImpB();
    Abstraction* abs1 = new RefinedAbstraction(impB);
    abs1->Operation();
    getchar();
    return 0;
}

原文地址:https://www.cnblogs.com/fourmi/p/12076845.html

时间: 2024-11-29 04:09:16

设计模式-Bridge(结构型模式)-用于客户需求较多,频繁对类进行添加修改的情形,将抽象类与具体实现类分开的相关文章

设计模式-Composite(结构型模式) 用于 递归构建 树 状 的组合结构,与Decorator的区别是 Composite旨在通过构造子类而添加新操作,而Decorator直接添加新操作。

以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Component.h #pragma once class Component { public: Component(); virtual ~Component(); virtual void Operation() = 0; virtual void Add(const Component&); virtual void Remove(const Component&); virtual Component

设计模式(34)-----结构型模式-----桥接设计模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦. 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类.这两种类型的类可被结构化改变而互不影响. 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法.其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆. 介绍 意图:将抽象部分与实现部分分离,使它们都可以独立的变化. 主要解决:在有多

设计模式4 结构型模式

设计模式4  结构型模式 目录 代理模式 装饰器 外观模式 适配器模式 代理模式,美国,韩国代理购物 [email protected]:~$ cat main.cpp  #include<iostream> using namespace std; class Item //商品 { public: Item(string kind ,bool fact) { this->kind = kind; this->fact = fact; } string getKind() { r

设计模式总结-结构型模式

描述: 如何组合类和对象以获得最大的结构: 不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法: 分类: 适配器模式 http://blog.csdn.net/huo065000/article/details/22177651 装饰模式 http://blog.csdn.net/huo065000/article/details/22061403 代理模式 http://blog.csdn.net/huo065000/article/details/22177

Java经典23种设计模式之结构型模式(一)

结构型模式包括7种:适配器模式.桥接模式.组合模式.装饰模式.外观模式.享元模式.代理模式. 本文主要介绍适配器模式和桥接模式. 一.适配器模式(Adapter) 适配器模式其实很简单,就像手机充电器一样,手机需要5V的,而插座出来是220V.因此需要充电器变压就ok.再比如,一个之会说汉语的和一个只会说英语的无法沟通,那就中间请个翻译.所有的交流通过翻译,翻译翻给会说英语的,就能完成一次单项交流的.链接1 中的例子非常生动形象了.总结一下,无非就是有个通用的接口(称为Target),如果一切顺

Java经典23种设计模式之结构型模式(二)

接上篇,本文介绍结构型模式里的组合模式.装饰模式.外观模式. 一.组合模式(Composite) 组合模式:将对象组合成树形结构,表示"部分--整体"的层次结构.最终达到单个对象和组合对象的使用具有一致性.单看这句话貌似有点抽象,其实比较简单. 以李云龙的独立团为例,目的要统计赵嘉宇一战共歼灭敌人多少个.最高的级别是团,一个团有若干个营,一个营有若干个排,一个排有若干个战士.(为了简化问题,排下面就不设行政单位了).很自然的,李云龙给营长开会回去给老子统计.营长回去给各个排长开会,赶紧

《设计模式》结构型模式1

上篇博文写了创建型模式中的(工厂家族).这次来介绍一下结构型模式.主要从各个模式的含义,优缺点,适用场合及结构图来了解结构型模式. 结构型模式包括有7种模式,适配器模式,外观模式,代理模式,桥接模式,享元模式,组合模式,装饰模式.每个模式各有优缺,孰优孰劣,请看下文. 1.适配器模式 定义:将一个类的接口转换成客户希望的另外一个接口.使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 结构图: 适用于:想要使用一个已存在的类,但接口和你的要求不同时 在软件开发后期或是维护时期,在双方都不

Java经典23种设计模式之结构型模式(三)------附代理模式、适配器模式、外观模式区别

本文介绍7种结构型模式里的剩下两种:享元模式.代理模式. 一.享元模式FlyWeight 享元模式比较简单且重要,在很多场合都被用到,只不过封装起来了用户看不到.其概念:运用共享内存技术最大限度的支持大量细粒度的对象.这个概念给的有些抽象,说白了就是如果内存中存在某个对象A,如果再次需要使用对象A的时候如果内存中有A这个对象就直接使用它,不要再次new了.如果没有,则重新new一个.基于这个特点,享元模式使用时一般会给待访问对象传递一个Tag,用来标识这个对象,而且要同时使用抽象工厂的方法进行访

Java学习--设计模式之结构型模式(二)

一.装饰器模式(Decorator Pattern) 1.概念 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装.这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能. 2.简介 意图:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰器模式相比生成子类更为灵活. 主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引