《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方法——子类具体实现。

原文地址:https://www.cnblogs.com/zhazhaacmer/p/12396804.html

时间: 2024-11-05 22:50:06

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

java8实战:filter的简单使用

<JAVA8实战>中的例子 要实现的功能:通过Apple的color或weight属性,对List<Apple>进行筛选. 1.首先定义com.owl.entity.Apple: package com.owl.entity; public class Apple { private String color; private Integer weight; public String getColor() { return color; } public void setColo

下载Java8实战视频教程

1.15套java架构师,高并发,分布式,集群,大型分布式综合项目实战详情:https://my.oschina.net/java168/blog/863547 2.36套精品Java高级课及架构课,亿级流量,P2P金融,第三方支付,设计模式实战,程序调优,系统设计:https://my.oschina.net/java168/blog/1539323 下载Java8实战视频教程

电子书 Java8实战.pdf

本书全面介绍了Java 8 这个里程碑版本的新特性,包括Lambdas.流和函数式编程.有了函数式的编程特性,可以让代码更简洁,同时也能自动化地利用多核硬件.全书分四个部分:基础知识.函数式数据处理.高效Java 8 编程和超YUEJava 8,清晰明了地向读者展现了一幅Java 与时俱进的现代化画卷. 限个人学习使用,不得用于商业用途,请在下载后24小时内删除.备注:资源来自网络,如有不合理可私信我,秒删.电子书 Java8实战.pdf 免费下载https://page55.ctfile.co

重构中对设计模式的反思

什么是设计模式? 每一类编程语言都具有其自身的特性,就像是面向对象的语言,其特性就是封装,继承,多态,抽象. 同一时候,使用每一类编程语言开发软件时也都有一些设计准则,这些准则保证了软件的质量,即具有良好的设计. 而设计模式则是广大软件开发者总结出的开发经验技巧,它们利用编程语言的特点,实现这些准则.因此,能够想象,当我们对设计模式熟悉到一定程度后,在设计系统时.我们眼里就会变得没有设计模式,仅仅有设计准则,真正达到手中无剑.心中有剑的境地. 在学习设计模式时.到底要学什么?      曾经.在

引入模板模式重构FtpClientUtil

在<ftp上传与下载>文章中,封装一个Ftp上传下载的工具类,主要代码如下: 上传: /**上传文件 * @param remoteFileName 远程文件名称 * @param locaFileName 本地文件名称 */ public void upload(String remoteFileName,String locaFileName){ FTPClient ftp=null; try { ftp = new FTPClient(); ftp.addProtocolCommandL

用Java 8 Lambda表达式实现设计模式:命令模式

链接:http://www.importnew.com/16789.html 在这篇博客里,我将说明如何在使用Java 8 Lambda表达式的函数式编程方式时实现命令设计模式.命令模式的目标是将请求封装成一个对象,从对客户端的不同类型请求,例如队列或日志请求参数化,并提供相应的操作.命令模式是一种通用编程方式,该方式基于运行时决策顺序来执行方法.模式的参与者如下: 命令 :声明用于执行操作的接口. 实体命令 :定义接收者对象和动作的绑定. 客户端 :创建实体命令实例并设置它的接收者. 调用者:

重构机房收费系统之 模板方法模式

对于模板方法模式的使用,我懊悔自己用晚了,由于我们的机房收费收费系统有非常多窗口是差点儿一样的,假设我们不用模板方法模式,就会大大添加工作量,首先,我们须要反复的创建窗口,其次我们的代码量也会大大添加,就是复制.粘贴代码也是一件让人摒弃的事情,所以推出模板方法模式,用意就在降低代码反复,降低工作量,通过求同存异的思想来实现.以下看一下我在组合查询中用到的模板方法模式: 首先,创建父窗口,父窗口的创建就是普通的winform,我们知道组合查询这块儿一共同拥有四个窗口是大同小异的:学生上机状态查看.

重构_使用模板模式替代重复业务操作

在日常开发中经常有重复的业务操作,每次写这些重复操作时总感觉冗余,又少点管理.今天我在开发中又遇到了这个问题,却发现项目组中的大牛已经帮我将重复的操作管理好了,于是便请教一番,偷偷学了这个---模板设计模式. 模板设计模式要注意以下几点: 将重复的业务操作抽取出一套模板: 将实现模板的实现类放到管理器中统一管理: 在业务中用的时候只用管理器,忽略模板的实现类. 掌握了要点之后,我们开始今天的实战阶段,项目中的需求是这样的: 先找到有某一类型的货品的日志表,日志表有,货品与日志表的对应关系也有(货

经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】

写在前面:设计模式源于生活,而又高于生活! 为什么要使用设计模式重构代码 使用设计模式可以重构整体架构代码.提高代码复用性.扩展性.减少代码冗余问题. Java高级工程师装逼的技能! 什么是策略模式 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题. 1.环境(Context)角色:持有一个Strategy的引用 2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现.此角色给出所有的具体策略类所需的