策略模式重构
策略模式中的策略在编程中其实就是算法,使用Sttrategy模式可以整体地替换算法的实现部分。能够整体替换算法,能够让我们轻松地以不同的算法去解决同一个问题,这种模式就是Strategy模式。
该模式由三大部分组成:父级接口,多个实现该接口的子类,然后是持有该接口类的上下文。
通常的编程时算法会被写在具体方法中,Strategy模式特意将算法和其他部分分离开来,只是定义了与算法相关的接口(API),然后在程序中以委托的方式来使用算法。借助委托,算法的替换,特别是动态替换成为可能。
/*接口---定义了一个抽象函数,传入String,返回布尔类型,这是一个函数式接口,函数签名也明确了,可以愉快第使用Lambda*/
interface ValidationStrategy {
/*定义一个验证文本的接口*/
public boolean execute(String s);
}
//策略一,
static private class IsAllLowerCaseimplements ValidationStrategy {
public boolean execute(String s){
return s.matches("[a-z]+");
}
}
//策略二,
static private class IsNumericimplements ValidationStrategy {
public boolean execute(String s){
return s.matches("\\d+");
}
}
//使用上边的策略类验证策略
Java8新特性玩法:
有了Lambda,策略设计模式省去了代表每种算法的具体实现类,直接用Lambda表达式传递代码就完美解决了。