策略模式
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_;
};