资讯专栏INFORMATION COLUMN

模板方法模式(Template)

Sourcelink / 3200人阅读

摘要:模板方法模式一模板方法模式定义定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤角色抽象类实现了模板方法具体类实现抽象类中的抽象方法抽象类中的方法抽象方法父类只声明,不实现模板方

模板方法模式

一. 模板方法模式 1.1 定义

定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤.

1.2 角色

抽象类:实现了模板方法.

具体类:实现抽象类中的抽象方法.

1.3 抽象类中的方法

抽象方法:父类只声明,不实现.

模板方法:父类声明并实现.

钩子方法:父类声明并实现,由子类扩展.

二. 具体实现 2.1 创建抽象模板
    public abstract class AbstractTemplate {
        abstract void print1();
        abstract void print2();
        public final void execute(){
            this.print1();
            this.print2();
        }
    }
2.2 创建具体对象
    public class TemplateA extends AbstractTemplate {
        @Override
        void print1() {
            System.out.println("TemplateA print1 ...");
        }
        @Override
        void print2() {
            System.out.println("TemplateA print2 ...");
        }
    }
    public class TemplateB extends AbstractTemplate {
        @Override
        void print1() {
            System.out.println("TemplateB print1 ...");
        }
        @Override
        void print2() {
            System.out.println("TemplateB print2 ...");
        }
    }
2.3 调用
    public static void main(String[] args) {
        AbstractTemplate template = new TemplateA();
        template.execute();
        template = new TemplateB();
        template.execute();
    }
2.4 输出
    TemplateA print1 ...
    TemplateA print2 ...
    TemplateB print1 ...
    TemplateB print2 ...
三. 优缺点 3.1 优点

封装不变部分,扩展可变部分.

行为由父类控制,子类实现.

3.2 缺点

每个不同的实现方式都要新建一个子类,导致类膨胀.

四. 源码
    https://github.com/Seasons20/DisignPattern.git

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69743.html

相关文章

  • 3.3、URI 模板模式Template Pattern)

    摘要:模板可以很方便地用于访问一个方法中的的被选择的部分。为模板拟定的文档定义了一个是怎样被参数化的。为了处理注解,需要按名找到匹配模板的变量。在定义模板变量时,你需要更高的精确度。语法的第一部分定义了变量名,第二部分是一个正则表达式。     这一部分是对 Spring 5 文档的直接翻译,连接是这个。这一部分的示例不再贴代码,请到这个项目的 mvc 分支下查看,本篇示例的控制器名称是 U...

    caiyongji 评论0 收藏0
  • Template Method: 从李渊开国看模板方法模式

    摘要:从李渊开国看模板方法模式假如史书记载没有水分的话,那么相对于其他开国皇帝,李渊的难度最低,毕竟什么事情都交给他儿子干就完事了。而李世民则接受李渊的调遣,负责实现各个细节。模板方法模式是抽象与实践分离的又一个经典实践。 Template Method: 从李渊开国看模板方法模式 假如史书记载没有水分的话,那么相对于其他开国皇帝,李渊的难度最低,毕竟什么事情都交给他儿子干就完事了。 从晋阳...

    April 评论0 收藏0
  • 基于TmodJS的前端模板工程化解决方案

    摘要:原作者唐斌腾讯什么原名是一个简单易用的前端模板预编译工具。本文作者为来自腾讯团队的唐斌,他在本文中为我们分析了传统前端模板内嵌的弊端,如开发调试效率低下自动化构建复杂度比较高等特点,并针对目前现状给出了较好的解决方案。 原作者: 唐斌(腾讯)| TmodJS什么 TmodJS(原名atc)是一个简单易用的前端模板预编译工具。它通过预编译技术让前端模板突破浏览器限制,实现后端模板一样的同...

    zhaochunqi 评论0 收藏0
  • 动手搭建后端框架-Velocity模板引擎的应用

    摘要:目录建造者模式应用。其实不用也可以,因为不是很复杂,只是为了复习一下所学过的设计模式知识目录工厂模式应用。 为了提高开发效率,通常会想办法把一些模式固定的重复性的劳动抽取出来,以后再使用的时候,拿来主义就可以了。这样既可以提高开发效率,又降低了出错的风险。 这一思想在我们的日常工作中可以说随处可见,我们完成一项复杂的工程,并不需要面面俱到什么都自己写,我们完全可以利用第三方的jar包让...

    villainhr 评论0 收藏0
  • web.py源码分析: 模板(3)

    摘要:前两篇文章主要说明了的模板系统将模板文件处理后得到的结果函数。生成函数的代码这个是模板生成过程中最长最复杂的一段,会应用到的分析功能以及动态编译功能。参数都是一个,表示还未解析的模板内容。 前两篇文章主要说明了web.py的模板系统将模板文件处理后得到的结果:__template__()函数。本文主要讲述模板文件是如何变成__template__()函数的。 Render和frende...

    OnlyMyRailgun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<