C++中的设计模式:桥接模式

本文最后更新于:2023年9月18日 凌晨

标题:C++中的设计模式:桥接模式

简介:
桥接模式是一种常用的设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。

正文:

1. 桥接模式的定义

桥接模式包括两个维度:Abstraction(抽象)和Implementor(实现)。抽象包含一个指向实现的指针,它定义了抽象部分的接口。实现定义了实现部分的接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Implementor {
public:
virtual void operationImpl() = 0;
};

class ConcreteImplementorA : public Implementor {
public:
void operationImpl() override {
std::cout << "Concrete Implementor A\n";
}
};

class ConcreteImplementorB : public Implementor {
public:
void operationImpl() override {
std::cout << "Concrete Implementor B\n";
}
};

class Abstraction {
protected:
Implementor* implementor;

public:
Abstraction(Implementor* impl) : implementor(impl) {}

virtual void operation() = 0;
};

2. 具体实现

1
2
3
4
5
6
7
8
class RefinedAbstraction : public Abstraction {
public:
using Abstraction::Abstraction;

void operation() override {
implementor->operationImpl();
}
};

3. 桥接模式的应用

1
2
3
4
5
6
7
8
9
10
11
12
int main() {
ConcreteImplementorA implA;
ConcreteImplementorB implB;

RefinedAbstraction abstractionA(&implA);
RefinedAbstraction abstractionB(&implB);

abstractionA.operation();
abstractionB.operation();

return 0;
}

4. 桥接模式的应用场景

桥接模式常用于以下场景:

  • 当一个类存在两个独立变化的维度时,可以将其分为抽象和实现两部分。
  • 当一个类需要在运行时选择实现时,可以将实现作为参数传递给抽象类。

结论:

桥接模式是一种常用的设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。在C++中,可以通过定义抽象类和实现类来实现桥接模式。桥接模式常用于需要处理两个独立变化维度的场景。


C++中的设计模式:桥接模式
https://jinbilianshao.github.io/2023/09/18/C-中的设计模式:桥接模式/
作者
连思鑫
发布于
2023年9月18日
许可协议