顾名思义,有多个策略的方式,已代码为例
public class MyCalculator {
public MyCalculator(){
}
public final int APPLE=1;
public final int NOKIA=2;
public final int ANDROID=3;
public void buyPhone(int i){
if(i==APPLE){
System.out.println(6000);
}else if(i==NOKIA){
System.out.println(400);
}else if(i==ANDROID){
System.out.println(2000);
}
}
}
这是一个类里面有个方法是买手机的方法根据传递进来的参数消费不同的钱,如果我需要买什么华为,我有的在里面ifelse 在实际开发中复杂程度是很多的,而且由于开闭原则,我们尽量少对原来的类做修改。 我们使用策略模式
public interface Caluator {
void BuPhone();
}
我们将买手机这个方法提取出来,让买Android手机实习这个方法
public class AndroidCaluator implements Caluator{
@Override
public void BuPhone() {
// TODO Auto-generated method stub
System.out.println(6000);
}
}
public class MyCalculator {
public MyCalculator(){
}
public void buyPhone(Caluator caluator){
caluator.BuPhone();
}
}