博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板方法模式(Template)
阅读量:5914 次
发布时间:2019-06-19

本文共 1370 字,大约阅读时间需要 4 分钟。

模板方法模式

一. 模板方法模式

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

转载地址:http://ziwvx.baihongyu.com/

你可能感兴趣的文章
解读美国白宫大数据报告
查看>>
正则验证字符串中是否存在数字
查看>>
Linux进程管理
查看>>
Android连续点击两次Back键退出程序
查看>>
避免烦恼成心病
查看>>
CentOS常用命令
查看>>
VSAN 6.2 设计指南
查看>>
实例讲解PAT配置
查看>>
Swift2.0(8)分支循环
查看>>
我的友情链接
查看>>
Python脚本之审查linux是否***之最近登陆ip归属地排查
查看>>
Hadoop2.6运行wordcount
查看>>
关于sendmail报错“did not issue MAIL/EXPN/VRFY/ETRN during connection to
查看>>
文件服务器的使用说明
查看>>
优秀DBA应该让数据库的每一件事情都自动化
查看>>
排序算法--选择排序
查看>>
LVS+Keepalived实现高可用
查看>>
springmvc 传值问题详解
查看>>
Effective Java (创建和销毁对象)
查看>>
使用代理控制点击输入框,键盘升起,页面上升
查看>>