策略模式UML.png策略模式
interface Hero{
void kaida();
}
英雄接口,开大。
class SunWuKong implements Hero{
public void kaida(){
//孙悟空开大
}
}
英雄孙悟空,实现开大方法
class DianWei implements Hero{
public void kaida(){
//典韦跳大
}
}
英雄典韦,实现开大方法
class Military{
private Hero hero;
public Military(Hero hero){
this.hero = hero;
}
public void kaida(){
if(hero != null){
hero.kaida();
}
}
}
军师类,军师职责是挑选合适的英雄去开大,就是这样
class Client{
Hero hero = new SunWuKong();
Military mMilitary = new Military(hero);
mMilitary.kaida();
}
客户端,这边选择的是孙悟空去开大,根据不同需求在运行时指定不同英雄,交给军师,让其开大
个人总结
策略模式给我感觉是一种,想做一件事情,这事情有很多种解决途径,有对的有错的,这些途径就是策略类(例子中的孙悟空,典韦),关键难点在于客户端如何抉择,这个是一个难点。
网友评论