浅谈设计模式

20 阅读1分钟

近期看了下B站《C++设计模式入门》,想谈谈对设计模式的理解

什么是设计模式

  1. 设计模式的目的在于提高代码复用率。通过良好的代码架构使得代码尽可能重用,同时尽量减少模块之间的耦合。在新增需求时,能尽可能少的侵入当前代码修改;
  2. 设计模式的应用场景是重构代码,服务于代码复用率,先完成,再完美
  3. 设计模式的常用手段是继承改组合,通过组合可以更好的泛化对象职责。

印象深刻的设计模式

模板方法

  1. 举例
class Parent
{
public:
    void Run() {
        Step1();
        if (Step2()) {
            Step3();
        }
    }
    
    virtual void Step1() = 0;
    virtual bool Step2() = 0;
    virtual void Step3() = 0;
};
  1. 理解
  • 由基类定义好其成员含函数的调用顺序,子类只需重写其余成员函数,但调用顺序由基类控制;
  • 如UI页面的加载顺序,页面的OnStart、OnSetupView的调用顺序在基类中实现。

策略模式

  1. 举例
class Strategy;
class SalesOrder {
private:
    Strategy *strategy;
public:
    SalesOrder(StrateyFactory *strategyFactory) {
        this->strategy = strategyFactory->NewStrategy();
    }
    ~SalesOrder() {
        delete this->strategy;
    }

   double CalculateTax() {
        Context context();
        double val = strategy->Calculate(context);
    }
};
  1. 理解
  • 将行为对象化,通过实例化对象替换原有的If-else
  • 通过基类动态加载不同行为,可以固化整体的实现方案,新增子类策略不影响现有代码。

观察者模式

装饰模式

桥方法

工厂方法

单例模式