博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式 — 模板模式
阅读量:6679 次
发布时间:2019-06-25

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

实现形式:抽象类定义了执行的方法(方法包含若干步骤),具体的步骤由子类重写实现。

使用场景: 

  • 有多个子类共同的步骤方法
  • 有重要的、复杂的共用方法

代码实例:

  代码场景:需要定义一个吃饭的模板,不管男人还是女人都要按照指定模板步骤进行吃饭。步骤为拿碗、吃饭、洗碗。

抽象模板类:AbstractEat

/** * 吃饭 抽象类 * @author GaoYuan * @date 2018/11/11 下午7:21 */public abstract class AbstractEat {    /** 定义了吃饭的步骤(模板) */    public final void eat(){        getBowl();        startEat();        washBowl();    }    /** 拿碗 */    abstract void getBowl();    /** 吃饭 */    abstract void startEat();    /** 洗碗 */    abstract void washBowl();}

具体实现子类 ManEat、WomanEat

/** * 男人吃饭 * @author GaoYuan * @date 2018/11/11 下午7:21 */public class ManEat extends AbstractEat{    @Override    void getBowl() {        System.out.println("ManEat getBowl()");    }    @Override    void startEat() {        System.out.println("ManEat startEat()");    }    @Override    void washBowl() {        System.out.println("ManEat washBowl()");    }}/** * 女人吃饭 * @author GaoYuan * @date 2018/11/11 下午7:21 */public class WomanEat extends AbstractEat{    @Override    void getBowl() {        System.out.println("WomanEat getBowl()");    }    @Override    void startEat() {        System.out.println("WomanEat startEat()");    }    @Override    void washBowl() {        System.out.println("WomanEat washBowl()");    }}

测试

public static void main(String[] args){    // 男人吃饭    AbstractEat eat = new ManEat();    eat.eat();    // 女人吃饭    eat = new WomanEat();    eat.eat();}

结果输出:

ManEat getBowl()ManEat startEat()ManEat washBowl()WomanEat getBowl()WomanEat startEat()WomanEat washBowl()

 

转自:https://www.liangzl.com/get-article-detail-29577.html

转载于:https://www.cnblogs.com/myseries/p/10837349.html

你可能感兴趣的文章
分析Linux 文件系统访问控制列表
查看>>
Confluence WIKI 安装、破解及添加汉化包(Windows)
查看>>
一起入门Citrix_XenDesktop7系列 二-- 跟着图片通过XenDesktop7交付(发布)应用与共享桌面...
查看>>
MyBatis学习手记(一)MaBatis入门
查看>>
SCTF-2014 writeup(部分)
查看>>
Elasticsearch 连接查询
查看>>
Retrofit入门
查看>>
设置Exchange 通讯组接收外部组织邮件
查看>>
观点:正在消逝的运维江湖
查看>>
istio 监控,遥测 (理论)
查看>>
Oracle insert 多条记录
查看>>
Python学习-baseNo.2
查看>>
spring data mongo 复合索引
查看>>
修改Windows Server 2008远程桌面连接端口
查看>>
Android获取指定目录下的文件代码
查看>>
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
查看>>
程序猿,你的坐姿正确吗?
查看>>
新疆之春(二)魂牵梦绕赛里木湖
查看>>
解析el表达式出错
查看>>
vmware实现nat上网
查看>>