strategy pattern即策略模式 核心思想:更专注“怎么做”,可供选择算法多种,针对不同的需求而采取不同的算法
类图:
案例代码:
public interface Strategy {
public int pickUp(int... data);//从一个数组中挑出一个数
}
public class MinStrategy implements Strategy{
@Override
public int pickUp(int... data) {
// TODO Auto-generated method stub
System.out.println("得到最小的数");
return 0;
}
}
public class MiddleStrategy implements Strategy{
@Override
public int pickUp(int... data) {
System.out.println("得到中位数");
return 0;
}
}
public class MaxStrategy implements Strategy{
@Override
public int pickUp(int... data) {
System.out.println("得到最大的数");
return 0;
}
}
public interface Context {
Context setStrategy(Strategy strategy);
int find(int...is);//从一个数组中找出一个数
}
public class Selector implements Context{
Strategy strategy;
@Override
public Context setStrategy(Strategy strategy) {
this.strategy=strategy;
return this;
}
@Override
public int find(int... is) {
// TODO Auto-generated method stub
return strategy.pickUp(is);
}
}
测试代码:
import org.junit.Test;
public class ContextTest {
@Test
public void test() {
Context context=new Selector();
Strategy sty;
sty=new MiddleStrategy();
context.setStrategy(sty).find(null);
sty=new MinStrategy();
context.setStrategy(sty).find(null);
}
}