行业知识
【设计模式】策略模式及函数式编程的替代
2026-10-19 12:07:43
来源:互联网转载
���文介绍策略模式以及使用函数式编程替代简单的策略模式。
策略模式
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context
对象的执行算法。
上面这段话来自菜鸟教程。简单来说,就是一种封装。Context需要执行某种算法,但是Context无法构造出算法的细节,于是Context需要找Concrete Strategy类获取,不同的Concrete Strategy类对应不同的算法,因为他们继承自一个公共的Abstract Strategy。
作为行为型模式的一种,这个还是一个比较好理解的设计模式,至少对我来说。我大概看了介绍就写了写C++的实现:
首先定义一个公共的父类:
struct AbsBaseStrategy{public: virtual void show() = 0;}; 然后写两个子类继承:
struct SpecificStrategy1 : AbsBaseStrategy{public: void show() override { cout public: void show() override { cout public: TradStrategyCtxt(shared_ptr}; void ctxtShow() { m_strategy-show(); }private: shared_ptr TradStrategyCtxt ctxt1(make_shared cout cout public: TradStrategyCtxt(function}; void ctxtShow() { m_func(); }private: function TradStrategyCtxt ctxt1(show1); TradStrategyCtxt ctxt2(show2); ctxt1.ctxtShow(); ctxt2.ctxtShow();}