C++设计模式——Bridge模式

来源:互联网 发布:sql 查询分析器 编辑:程序博客网 时间:2024/06/05 16:23

关于Bridge模式

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

往下讲之前插上以下这段话。总结面向对象实际上就两句话:一是松耦合,二是高内聚。面向对象系统追求的目标就是尽可能地提高系统模块内部的内聚、尽可能降低模块间的耦合。然而这也是面向对象设计过程中最难把握的部分。

Bridge模式,将系统分为两个相对独立的部分,一个是抽象部分,一个是实现部分。Bridge模式是将抽象和实现分别独立实现。使用组合的方式将抽象和实现彻底解耦,这样的好处是抽象和实现可以分别独立地变化,系统的耦合性也得到了很好的降低。

代码示例

// BridgePattern.cpp #include "stdafx.h"#include<iostream>using namespace std;//实现class AbstractionImp{public:     virtual ~AbstractionImp(){}    virtual void Operation() = 0;protected:    AbstractionImp(){}};//不同的实现方法Aclass AbstractionImpA :public AbstractionImp{public:    ~AbstractionImpA(){}    AbstractionImpA(){}    void Operation()    {        cout << "AbstractionImpA Operation()!\n";    }};//不同的实现方法Bclass AbstractionImpB :public AbstractionImp{public:    ~AbstractionImpB() {}    AbstractionImpB() {}    void Operation()    {        cout << "AbstractionImpB Operation()!\n";    }};//抽象class Abstraction{public:    virtual ~Abstraction(){}    virtual void Operation() = 0;protected:    Abstraction(){}};//提炼抽象,将抽象与实现桥接起来class RefinedAbstraction:public Abstraction{public:    RefinedAbstraction(AbstractionImp* imp):_imp(imp){}    ~RefinedAbstraction(){}    virtual void Operation()    {        _imp->Operation();    }private:    AbstractionImp* _imp;};int main(){    AbstractionImp* imp = new AbstractionImpA();    Abstraction* obj = new RefinedAbstraction(imp);    obj->Operation();    system("pause");    return 0;}
原创粉丝点击