桥接模式

简介: 桥接模式


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

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

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

代码如下:


#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设计模式【七】:桥接模式
43 0
|
6月前
桥接模式
桥接模式
36 0
|
29天前
|
设计模式 缓存 C#
适配器模式与桥接模式:一分钟浅谈
【10月更文挑战第14天】本文介绍了面向对象设计中的适配器模式和桥接模式,包括它们的概念、应用场景、实现方式及常见问题。适配器模式通过接口转换解决不兼容问题,适用于系统扩展和遗留系统升级;桥接模式通过分离抽象和实现提高灵活性,适用于多维度变化和避免类爆炸。文中还提供了C#代码示例以加深理解。
39 3
|
5月前
结构型模式之桥接模式
结构型模式之桥接模式
结构型模式之桥接模式
|
5月前
|
设计模式 Java
Java设计模式之桥接模式详解
Java设计模式之桥接模式详解
|
6月前
|
API 数据库
结构型 桥接模式
结构型 桥接模式
43 0
|
设计模式 C++
2023-6-16-第七式桥接模式
2023-6-16-第七式桥接模式
78 1
|
设计模式 Java 开发者
桥接模式【Java设计模式】
桥接模式【Java设计模式】
68 0
|
Linux Windows
结构型模式-桥接模式
结构型模式-桥接模式
112 0
|
设计模式
我学会了,桥接模式
桥接模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
121 0
我学会了,桥接模式