策略模式
定义:
定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
诀窍:
多用组合,少用继承;针对接口编程,不针对实现编程。
举例子:
将weapon独立起来。
public class Fighter {
Weapon weapon;
public void fight() {
weapon.attack();
}
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
}
public interface Weapon {
void attack();
}
public class Sword implements Weapon {
@Override
public void attack() {
System.out.println("用剑砍");
}
}
public class Bow implements Weapon {
@Override
public void attack() {
System.out.println("用弓箭射");
}
}
public class Player extends Fighter {
}
public class Test {
public static void main(String[] args) {
Player player = new Player();
player.setWeapon(new Sword());
player.fight(); // 用剑砍
player.setWeapon(new Bow());
player.fight(); // 用弓箭射
}
}