定义一系列的算法,把他们一个个封装起来,并且使它们可以相互替换。本模式是的算法可以独立于使用他的客户而变化
这里写图片描述Context中的contextinterface实际是使用context类中的strategy的algorithminterface方法
优点:
strategy层定义了一个算法系列,供context随意替换
消除if else switch等语句
缺点:
客户需了解不同strategy的区别
增加了对象数目
增加了strategy和context之间的通信开销
代码
Main
public class Main {
public static void main(String[] args) {
Goaway goaway=new Goaway();
goaway.setMystStrategy(new Fly());
goaway.getWay();
}
}
Goaway
public class Goaway {
Strategy mystStrategy;
public Strategy getMystStrategy() {
return mystStrategy;
}
public void setMystStrategy(Strategy mystStrategy) {
this.mystStrategy = mystStrategy;
}
public void getWay(){
if(mystStrategy!=null){
mystStrategy.getWay();
}else{
System.out.println("No way");
}
}
}
interface:Strategy
public interface Strategy {
public void getWay();
}
imp:Drive
public class Drive implements Strategy {
@Override
public void getWay() {
System.out.println("开车");
}
}
imp:Fly
public class Fly implements Strategy {
@Override
public void getWay() {
System.out.println("飞");
}
}
imp:Walk
public class Walk implements Strategy {
@Override
public void getWay() {
System.out.println("走路");
}
}
网友评论