4 Decorator

Davids 2025-08-10 05:13:12
Categories: > > Tags:

装饰模式:

支持主体类在多个方向上拓展能力,以解决子类爆炸的问题,核心是划分不同继承分支的职责,相互依赖的职责又通过组合联系。 通过 组合(动态) 给对象添加能力,而不是 继承(静态)。(当子类能力出现分支,但又相互依赖的情况下,在 渲染场景 下尤为常见)

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
29
30
31
32
// 主体类
class Component {
public:
virtual void DoSomething() = 0;
};

// 子类分支1
class BranchA : public Component {
public:
// 负责处理 Part1
virtual void DoSomething() override {};
};

// 子类分支2
class BranchB : public Component {
public:
// 负责处理 Part2
virtual void DoSomething() override {};
};

// 装饰类
class BranchDecorator : public Component {
public:
// 依赖 基类 其他分支的能力 如 Part1、Part2
virtual void DoSomething() override {
// 是相似的职责但分了不同的方向/角度
component->DoSomething();
};
private:
Component* component;
};