美文网首页
使用lambda表达式重构面向对象的设计模式(一)

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

作者: 无羡爱诗诗 | 来源:发表于2019-02-28 20:10 被阅读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表达式传递代码就完美解决了。

    相关文章

      网友评论

          本文标题:使用lambda表达式重构面向对象的设计模式(一)

          本文链接:https://www.haomeiwen.com/subject/iiwkuqtx.html