什么是策略模式(Strategy Pattern):简单的说就是某个对象完成某个动作或得到某个结果的过程中有不同的实现细节(执行策略),将每种不同的实现细节封装在实现同一接口的具体实现类(即策略类)中,由执行者在程序中通过统一接口来动态的调用具体的策略。例如我们要得到一个结果,可以有很多种算法,我们就将这些算法封装在不同的具体类中,同时这些类实现同一个接口。程序中执行者通过统一的接口根据情况来动态的调用具体的的算法。算法的变化不会影响的客户端。
统一接口
package com.inter;
public interface MyStrategy {
public void mystrategy();
}
策略类一
package com.impl;
import com.inter.MyStrategy;
public class Strategy_1 implements MyStrategy{
@Override
public void mystrategy() {
// TODO Auto-generated method stub
System.out.println("执行策略一");
}
}
策略类二
package com.impl;
import com.inter.MyStrategy;
public class Strategy_2 implements MyStrategy{
@Override
public void mystrategy() {
// TODO Auto-generated method stub
System.out.println("执行策略二");
}
}
执行者实体类
package com.domain;
import com.inter.MyStrategy;
public class Persion {
private MyStrategy myStrategy;
public Persion(MyStrategy myStrategy) {
super();
this.myStrategy = myStrategy;
}
public void execute(){
myStrategy.mystrategy();
}
}
测试类
package com.test;
import com.domain.Persion;
import com.impl.*;
import com.inter.MyStrategy;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Persion persion1=new Persion(new Strategy_1());
persion1.execute();
Persion persion2=new Persion(new Strategy_2());
persion2.execute();
}
}