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

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

  hot3.png

1、介绍

Template Method模式:在父类中定义处理流程的框架,在子类中实现具体处理的模式。

2、例子类图

Template Method

3、代码例子

AbstractDisplay:抽象模板类

package me.jtzen9.template_method;public abstract class AbstractDisplay {    public abstract void open();    public abstract void print();    public abstract void close();    public final void display() {        open();        for (int i = 0; i < 5; i++) {            print();        }        close();    }}

CharDisplay:具体实现类

package me.jtzen9.template_method;public class CharDisplay extends AbstractDisplay {    private char ch;    public CharDisplay(char ch) {        this.ch = ch;    }    @Override    public void open() {        System.out.println("<<");    }    @Override    public void print() {        System.out.println(ch);    }    @Override    public void close() {        System.out.println(">>");    }}

StringDisplay:具体实现类

package me.jtzen9.template_method;public class StringDisplay extends AbstractDisplay {    private String string;    private int width;    public StringDisplay(String string) {        this.string = string;        this.width = string.getBytes().length;    }    @Override    public void open() {        printLine();    }    @Override    public void print() {        System.out.println("|" + string + "|");    }    @Override    public void close() {        printLine();    }    private void printLine(){        System.out.print("+");        for (int i = 0; i < width; i++) {            System.out.print("-");        }        System.out.println("+");    }}

测试代码:

package me.jtzen9.template_method;public class Main {    public static void main(String[] args) {        AbstractDisplay d1 = new CharDisplay('H');        AbstractDisplay d2 = new StringDisplay("Hello,world.");        d1.display();        d2.display();    }}

3、说明

摘至:【日】结城浩/著,杨文轩/译 .《图解设计模式》 北京:人民邮电出版社. 2017. 13~22

转载于:https://my.oschina.net/jtzen9/blog/910093

你可能感兴趣的文章
关于VLOOUP函数与index match函数
查看>>
Netscaler重置密码的方法
查看>>
MySQL内存设置—— MySQL server has gone away
查看>>
Java语言中的----运算符
查看>>
Cannot Register the virtual hard
查看>>
Linux系统的各种后门和日志工具详细介绍
查看>>
支付宝及时到账支付成功返回信息
查看>>
linux基础之bash基础
查看>>
MyEclipse 快捷键
查看>>
jQuery data- 取值
查看>>
05-k8s-fannel
查看>>
冷饭热炒-谈DOS和DDOS***
查看>>
ntop的安装与使用
查看>>
ES Java API_基于bulk实现多4S店销售数据批量上传
查看>>
TypeScript基础入门之JSX(二)
查看>>
根据某一字段值相同合并字符串 - - SQL
查看>>
django-关于JSON编码格式的异常处理
查看>>
debian 系统版本 划分、识别、演进 的释疑(升级系统须知)
查看>>
如何编写nagios插件
查看>>
LVS 工作原理解析
查看>>