您的位置:首页 > 其它

设计模式:策略模式-strategy

2017-01-11 09:44 573 查看

定义一系列的算法,把他们一个个封装起来,并且使它们可以相互替换。本模式是的算法可以独立于使用他的客户而变化



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("走路");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: