1 所有战略的公共抽象
public interface Trategy {
//战略抽象方法public void trategyContent();
}
2 具体战略 实现了1中的接口
public class Trategy1 implements Trategy {
@Override
public void trategyContent() {
// TODO Auto-generated method stub
//战略一
System.out.println("这是战略一 ");
}
}
3 具体战略 实现了1中的接口
public class Trategy2 implements Trategy {
@Override
public void trategyContent() {
// TODO Auto-generated method stub
//战略二
System.out.println("这是战略二 ");
}
}
4 相当于存放战略的箱子 每个战略放在箱子中
// 存放战略的箱子
public class TrategyBox {
private Trategy trategy;
//构造函数 要使用的战略
public TrategyBox(Trategy trategy) {
this.trategy = trategy;
}
//使用战略
public void trategyContent() {
this.trategy.trategyContent();
}
}
5 某人开始使用战略
// 使用战略的人
public class TestMain {
/*
* 策略模式,高内聚低耦合的特点也表现出来了, 还有一个就是扩展性,也就是 OCP 原则,策略类可以继续增加下去
*/
public static void main(String[] args) {
//拿到战略一
TrategyBox t1 = new TrategyBox(new Trategy1());
System.out.println("看我使用战略一");
t1.trategyContent();//拆开执行
//拿到战略二
t = new TrategyBox(new Trategy2());
System.out.println("看我使用战略二");
t2.trategyContent();//拆开执行
}
}
总结 : 策略模式,高内聚低耦合的特点也表现出来了, 还有一个就是扩展性,也就是 OCP 原则,策略类可以继续增加下去