策略模式
定义:在策略模式中,我们创建 各种策略对象,和一个行为随着 策略对象的改变而改变context对象。策略对象改变对Context对象的执行算法
概念:定义一系列的算法,用Context将他们他们封装起来,可以相互替换。
何时使用:有许许多多的类,区别只是他们的行为不同。关键是他们实现的是同一个接口。
优点:算法可以自由切换,避免多重条件判断,
缺点:当策略过多的时候,所有的策略都会对外暴露
代码实现
public interface Strategy {
void Calculation(int i,int j);
}
public Class addStategy implements Strategy {
@Overried
void Calculation(int i,int j){
System.out.println("i+j:"+(i+j));
}
}
public Class reduceStategy implements Strategy {
@Overried
void Calculation(int i,int j){
System.out.println("i-j:"+(i-j));
}
}
//创建Context
public Class Context{
private Stategy stategy;
Context(Stategy stategy){
this.stategy = stategy;
}
public void CalculationNumber(int i,int j){
stategy.Calculation(i.j);
}
}
test.java
public Class StrategyTest{
Context context = new Context(new addStategy ());
context.CalculationNumber(1,2);
}
总结
1.封装变化的概念。少了很多if的条件判断
2.编程中使用接口,而不是使用的是具体的实现类(面向接口编程)