使用lambda表达式重构面向对象的设计模式(一)

2019-02-28  本文已影响68人  无羡爱诗诗

策略模式重构

策略模式中的策略在编程中其实就是算法,使用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,策略设计模式省去了代表每种算法的具体实现类,直接用Lambda表达式传递代码就完美解决了。

上一篇下一篇

猜你喜欢

热点阅读