策略模式
策略模式属于行为模式的一种,就是一个类的行为可以在运行时,根据不同的情况使用不同的算法处理事件。
栗子1:家里的智能洗衣机,一般都有多种洗衣服的模式,我们可以根据不同的需求来设定洗衣服的模式。
栗子2:出去旅游,可以选择坐飞机,也可以选择坐汽车,或者自驾,这些都相当于是不同的出行策略.
在代码中,如果一个类需要根据不同的条件来执行不同的算法,传统的写法是用很多if…else来做判断。但是这样代码会显得非常乱,而且难以维护。
如果我们把一个个的方法封装成不同的类,然后去共同实现一个相同接口,我们在使用的时候,就可以直接设定不同的行为来执行了。
废话不多说,直接上代码
//先定义一个接口
public interface Strategy{
void doOperation();
}
//下面的类都实现上面的这个接口中的方法
--------------------------------------------------
//第一个策略
class Operation1 implements Strategy{
@override
public void doOperation(){
System.out.println("执行策略1");
}
}
//第二个策略
class Operation2 implements Strategy{
@override
public void doOperation(){
System.out.println("执行策略2");
}
}
//第三个策略
class Operation3 implements Strategy{
@override
public void doOperation(){
System.out.println("执行策略3");
}
}
--------------------------------------------------
//根据不同的实现类,可以实现多种行为的切换
class Context{
private Strategy strategy;
//构造器参数可以是任何实现了Strategy接口的实现类
publlic Context(Strategy strategy){
this.strategy = strategy;
}
public void execute(){
strategy.doOperation();
}
}
--------------------------------------------------