Skip to content

策略模式

Before

cpp
struct Duck {
  Duck() = default;
  virtual ~Duck() = default;

  virtual void display() = 0;

  virtual void fly() = 0;
  virtual void quack() = 0;
};

After

cpp
struct Duck {
  Duck() = default;
  virtual ~Duck() = default;
  
  virtual void display() = 0;
  
  void fly() { fly_(); }
  void quack_() { quack_(); }
  
  std::function<void()> fly_;
  std::function<void()> quack_;
};

Changelog

Just observe 👀