看完23种设计模式的第一种设计模式-策略模式,总结如下:
设计:鸭子模型设计
鸭子:红头鸭、橡皮鸭
行为:飞、游泳
场景:红头鸭会飞,会游泳;橡皮鸭不会飞,不会游泳。
类图
测试类
public class DuckTest {
public static void main(String[] args) {
Duck duck = new RedheadDuck();
duck.display();
duck.setFlyBehavior(new FlyWithNoWing());
duck.setSwimBehavior(new SwimWithClaw());
duck.swimPerform();
duck.flyPerform();
}
}
总结
- 把变化的代码分离出来(行为是变化的,把行为分离出来,设计成接口(便于使用多态))
- 多用组合,少用继承(通过set方法,动态设置行为,行为可选,代码也可复用)
- 类的单一职责(飞的类负责飞,游泳的类负责游泳)
- 委派(好的设计,不考虑细节,只面向接口)