策略模式

书中以模拟鸭子的应用为例引出策略模式,方便理解。

模拟鸭子游戏:游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫。此系统设计了一个鸭子超类(Superclass),并让各种鸭子继承此超类。

abstract class Duck {
/**
* 所有的鸭子都会呱呱叫(Quack)也会游泳(Swim),
* 所以由超类负责处理这部分的实现代码。
*/
public void quack() {};
public void swim() {};
//每一种鸭子的外观都不同,所以display()方法是抽象的。
public abstract void display();
}
/**
* 每个鸭子子类型(subtype)负责实现自己的display()行为,
* 在屏幕上显示其外观。
*/
class MallardDuck extends Duck {
@Override
public void display() {
//外观是绿头
}
}
/**
* 许多其他类型的鸭子继承Duck类。
*/
class RedheadDuck extends Duck {
@Override
public void display() {
//外观是红头
}
}
继续阅读“策略模式”