定义:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
多用组合,少用继承。
抽象出那些经常需要改变的内容,独立成接口。
例如
//抽象类 角色
public abstract Character{
private WeaponBehavfor behavfor;
public void fight();
public void setWeaponBehavfor(WeaponBehavfor w);
}
//国王继承与角色
public class King extends Character{
public King(){
behavfor=new SwordBehavior();
}
public void attack(){
behavfor.userWeapon();
}
public void setWeaponBehavfor(WeaponBehavfor w){
behavfor=w;
}
}
//武器接口 每个角色都可用多种武器。可以随时进行切换
public interface WeaponBehavfor{
public void userWeapon();
}
public class SwordBehavior extends WeaponBehavfor{
public void userWeapon(){
System.out.println("宝剑");
}
}
public class KnifeBehavior extends WeaponBehavfor{
public void userWeapon(){
System.out.println("匕首");
}
}