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

策略模式重构

策略模式中的策略在编程中其实就是算法,使用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表达式传递代码就完美解决了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容