8 Strategy

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

策略模式:

将相似的 行为 进行抽象,使之可以在运行时动态自由切换其中任意一个。(一般与 if else / switch case 逻辑的 改造 紧密结合,重点是看业务是否足够相似,一般会拆分的比较小)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 一系列相似行为的抽象基类
class IStategy {
public:
virtual ~IStategy() {}
// 相似行为
virtual void DoSomeThing() = 0;
};

class Context {
public:
Context(IStategy* stategy) : m_stategy(stategy) {}
void DoSomething(){
m_stategy->DoSomeThing();
}
private:
IStategy* m_stategy;
};