桥接模式

简介: 桥接模式


目的:将抽象与实现相分离。

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

(抽象与实现分离是指让每种实现的变化不会影响到其他实现,从而打到应对变化的目的)

代码如下:


#include <list>
#include <iostream>
#include <string>
using namespace std;
/*实现*/
class Implementor{
    public:
    virtual void Operation()=0;
};
/*具体实现*/ 
class ImplementorA:public Implementor{
    public:
        void Operation()
        {
            cout<<"windows 版本"<<endl;
        }
};
class ImplementorB:public Implementor{
    public:
        void Operation()
        {
            cout<<"linux 版本"<<endl;
        }
};
/*抽象*/
class  Abstraction{
    protected:
        /*之所以先构建实现类正是由于抽象必须实现对实现的通信*/
        Implementor * Base; 
    public:
        virtual void Operation()=0;
}; 
/*
   被提炼的抽象
   作用:当具体实现的时候接收具体实现的基类指针,建立起类间通信 
*/ 
class RefinedAbstractionA:public Abstraction{
    public:
    RefinedAbstractionA(Implementor *t)
    {
        this->Base=t;
    }
    void SetOS(Implementor *t)
    {
        this->Base=t;
    }
    void Operation()
    {
        cout<<"dota:"; 
        Base->Operation();
    }
};
class RefinedAbstractionB:public Abstraction{
    public:
    RefinedAbstractionB(Implementor *t)
    {
        this->Base=t;
    }
    void SetOS(Implementor *t)
    {
        this->Base=t;
    }
    void Operation()
    {
        cout<<"LOL:";
         Base->Operation();
    }
};
int main(void)
{
    Implementor *windows = new ImplementorA();
    Implementor *linux   = new ImplementorB();
    RefinedAbstractionA *dota = new RefinedAbstractionA(windows);
    dota->Operation();
    dota->SetOS(linux);
    dota->Operation();
    RefinedAbstractionB *lol = new RefinedAbstractionB(windows);
    lol->Operation();
    lol->SetOS(linux);
    lol->Operation();
    return 0;
}

实现系统可能有多角度分类,每一种分类都有可能变化,那么把这种多角度分离出来让他们独立变化,减少它们之间的耦合——大话设计模式

何时使用桥接模式:

在发现我们不得不多角度去分类实现对象,也就是不同操作系统之间的软件存在不同的实现,我们必须解决兼容问题,在这个时候大量的继承会造成大量的类增加,违背了开闭原则。

问:在本次代码中如果我们需要开发新的软件怎么办?

答:只用在Abstrction里添加派生类就可以了,然后在建立类间通信。

相关文章
|
6天前
|
设计模式 Java 开发者
Java设计模式【七】:桥接模式
Java设计模式【七】:桥接模式
22 0
|
6天前
桥接模式
桥接模式
23 0
|
6天前
|
设计模式 Java 关系型数据库
聊聊Java设计模式-桥接模式
桥接(Bridge)模式是指将抽象部分与实现部分相分离,使它们都可以独立的发生变化。
48 7
聊聊Java设计模式-桥接模式
|
9月前
|
设计模式 Java 数据库连接
|
6天前
|
API 数据库
结构型 桥接模式
结构型 桥接模式
23 0
|
9月前
|
设计模式 C++
2023-6-16-第七式桥接模式
2023-6-16-第七式桥接模式
57 1
|
Linux Windows
结构型模式-桥接模式
结构型模式-桥接模式
92 0
|
设计模式 Java 数据库连接
Java设计模式 ->桥接模式
Java设计模式 ->桥接模式
78 0
|
设计模式
我学会了,桥接模式
桥接模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
92 0
我学会了,桥接模式