转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973

模板方法模式(Template Method):在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类能够再不改变算法结构的情况下,又一次定义算法中的某些步骤。简而言之:模板方法定义了一个算法的步骤。并同意子类为一个或多个步骤提供实现。

一、uml建模:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGh5X3ljdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

二、代码实现:

/**
* 演示样例:模板方法定义了一个算法的步骤,并同意子类为一个或多个步骤提供实现。 *
* 以吃饭为例:有几个步骤 --> 煮饭+烧菜+吃饭中+吃完了
*/
abstract class AbstractTemplate { public final void haveMeal() {
zhuFan();
shaoCai();
duringMeal();
finish();
} public abstract void zhuFan(); public abstract void shaoCai(); public void duringMeal() {
System.out.println("吃饭中...");
} public void finish() {
System.out.println("吃完了...");
}
} class Sub1 extends AbstractTemplate { @Override
public void zhuFan() {
System.out.println("使用电饭煲煮饭..."); } @Override
public void shaoCai() {
System.out.println("使用炉灶烧菜...");
}
} class Sub2 extends AbstractTemplate { @Override
public void zhuFan() {
System.out.println("使用高压锅煮饭..."); } @Override
public void shaoCai() {
System.out.println("使用电磁炉烧菜...");
}
} /**
* client測试类
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
AbstractTemplate at1 = new Sub1();
at1.haveMeal();
System.out.println("\n");
AbstractTemplate at2 = new Sub2();
at2.haveMeal();
}
}

三、总结

模板方法模式:一个抽象类中。有一个主方法,再定义1...n个方法。能够抽象,能够不抽象。定义子类继承该抽象类,重写抽象方法。通过调用抽象类,实现对子类的调用。

Java设计模式菜鸟系列(十)模板方法模式建模与实现的更多相关文章

  1. Java设计模式菜鸟系列(一)策略模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天開始咱们来谈谈Java设计模式. 这里会结合uml图形来解说,有对uml ...

  2. Java设计模式菜鸟系列(九)外观模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...

  3. Java设计模式菜鸟系列(七)命令模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39804057 命令模式(Command):将"请求"(命令/口令)封装 ...

  4. Java设计模式菜鸟系列(十七)桥接模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40008711 桥接模式(Bridge): 把事物和其详细实现分开(抽象化与实现化解耦),使 ...

  5. Java设计模式菜鸟系列(十四)代理模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些 ...

  6. Java设计模式菜鸟系列(十五)建造者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...

  7. Java设计模式菜鸟系列(二十二)中介者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与 ...

  8. Java设计模式菜鸟系列(十三)建模和实现状态模式

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859 状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像 ...

  9. Java设计模式菜鸟系列(四)工厂方法模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39760895 工厂方法模式(Factory Method) 工厂方法:顾名思义,就是调用工 ...

随机推荐

  1. OpenERP Web Client设置闲置有效时间

    在Web Client端使用OpenERP时,默认的cookie有效时间是浏览器的当前作业窗口,这样就是说只要你不关闭浏览器,不管闲置多长时间,当前的连线都是有效的.这样就会有安全问题,如果你忘了登出 ...

  2. 【转发】MVC Log4net

    1.引用log4net库类 2.写配置,我一般是写在web.config <configSections> <section name="log4net" typ ...

  3. alitomcat maven以及Autoconfig

    maven概述 Maven的核心是POM(Project Object Model),即项目对象模型.最直观的,maven对项目依赖进行统一的管理,让开发者从纷杂错乱的jar包世界摆脱出来,更加专注于 ...

  4. 19-spring学习-springMVC环境配置

    新建一共环境,添加spring支持,就可以开发springMVC了. 既然是springMVC,就必须为其定义相关配置. 1,springMVC所有配置都需要在applicationContext.x ...

  5. Think in Java(二):初始化与清理

    1. 区分重载方法: 參数顺序的不同能够区分两个方法,只是,普通情况下千万别这么做.由于这会使代码难以维护不能通过返回值类型来区分重载方法:由于假设我直接调用f(), 此时java不知道应该调用那一个 ...

  6. 【TP3.2与TP5.0区别】

    Tp3.2 和 Tp5.0之间的区别   5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正 ...

  7. spring注解 annotation

    @Resourse(name="  xxx") 意味从上下文找xxx名字一样的然后引入 @Repository("personDao") 意味生成一个 bean ...

  8. 视频播放器控制原理:ffmpeg之ffplay播放器源代码分析

    版权声明:本文由张坤原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/535574001486630869 来源:腾云阁 ht ...

  9. CentOS 7.1重启后无法进入Gnome

    问题环境: 新买的Intel NUC主机,通过光驱安装CentOS 7.1版本,安装过程没问题. 安装完毕后,重启. 坏了! 只能看到黑屏和一只可以移动的鼠标. 只能说说我的排查思路: 一.首先要进入 ...

  10. C#-拷贝目录内容(文件和子目录)

    /// <summary> /// 拷贝目录内容 /// </summary> /// <param name="source">源目录< ...