参考资料:《head first 设计模式》
策略模式:定义了算法簇,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
例1. 模拟鸭子游戏:
不同的鸭子的 quack 和 fly 有不同的表现,因此将这两个行为设计成接口。
(1)首先,创建行为接口QuackBehavior、FlyBehavior,并给出具体的实现类:
QuackBehavior接口:
package tao.pattern.strategy.interfaces;
public interface QuackBehavior {
public void quack();
}
具体的实现类:
Quack类,呱呱叫:
package tao.pattern.strategy.interfaces.impl;
import tao.pattern.strategy.interfaces.QuackBehavior;
public class Quack implements QuackBehavior {
@Override
public void quack() {
System.out.println("quack呱呱叫!");
}
}
Squeak类,吱吱叫:
package tao.pattern.strategy.interfaces.impl;
import tao.pattern.strategy.interfaces.QuackBehavior;
public class Squeak implements QuackBehavior {
@Override
public void quack() {
System.out.println("squeak吱吱叫!");
}
}
MuteQuack类,安静:
package tao.pattern.strategy.interfaces.impl;
import tao.pattern.strategy.interfaces.QuackBehavior;
public class MuteQuack implements QuackBehavior {
@Override
public void quack() {
System.out.println("<< 安静 >>");
}
}
FlyBehavior接口: