《Java8实战》 - 8.2.2 使用 Lambda 重构面向对象的设计模式 之 模板模式

Posted 好好学习,天天向上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Java8实战》 - 8.2.2 使用 Lambda 重构面向对象的设计模式 之 模板模式相关的知识,希望对你有一定的参考价值。

模板模式是啥?

一个抽象类Template主类,充分发挥抽象类的作用,一部分方法定义好,另一部分以接口的形式体现——需要每个子类具体地进行实现。

适用栗子:

  1. 造房子的时候,地基、走线、水暖、水管都是一样的,只有在建筑的后期才需要加自定义的冰箱、电视机、热水器等,自定义的部分交给住户自己实现决定。
  2. 西游记的九九八十一难,唐僧四人必须一个不漏地走完,这就是固定部分的模板;除了菩萨定好的,途中的支线任务,这部分菩萨只写了接口,唐僧四人组完全可以自由发挥,选择不同的具体实现。
  3. spring 中对 Hibernate 的支持,将一些已经定义好的方法封装起来,比如开启事务、获取 Session、关闭 Session 等,程序员不重复写那些已经规范好的代码,直接丢一个实体就可以保存。

优缺点

  1. 封装不变部分,用final进行方法的修饰
  2. 可变的部分,用接口来展示即可

代码Template主类

public abstract class GameOrderTemplate {
    abstract void initialize();

    abstract void startPlay();

    abstract void endPlay();

    //模板
    public final void play() {

        //初始化游戏
        initialize();

        //开始游戏
        startPlay();

        //结束游戏
        endPlay();
    }
}

其他的步骤,就是子类继承后必须重写对应的方法,然后实例化子类,调用父类play方法

Spring与模板方法

  • TransactionTemplate
  • JdbcTemplate,jdbc提供的数据访问模板,分别适用于不同的持久化机制,Spring将数据访问过程中固定的和可变的部分明确划分为两个不同的类:模板和回调。模板就指的是模板方法,固定的有数据库连接池等内容,不固定的有sql方法——子类具体实现。

以上是关于《Java8实战》 - 8.2.2 使用 Lambda 重构面向对象的设计模式 之 模板模式的主要内容,如果未能解决你的问题,请参考以下文章

java8新增特性---Lambda表达式

java8的新特性1

Java8新特性学习笔记 Lambda表达式

《Java8实战》读书笔记11:Java8中新的日期时间API

《Java8实战》读书笔记11:Java8中新的日期时间API

《Java8实战》读书笔记13:Java8 与 Scala