Java设计模式菜鸟系列(十)模板方法模式建模与实现
转载请注明出处: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设计模式菜鸟系列(十)模板方法模式建模与实现的更多相关文章
- Java设计模式菜鸟系列(一)策略模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天開始咱们来谈谈Java设计模式. 这里会结合uml图形来解说,有对uml ...
- Java设计模式菜鸟系列(九)外观模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...
- Java设计模式菜鸟系列(七)命令模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39804057 命令模式(Command):将"请求"(命令/口令)封装 ...
- Java设计模式菜鸟系列(十七)桥接模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40008711 桥接模式(Bridge): 把事物和其详细实现分开(抽象化与实现化解耦),使 ...
- Java设计模式菜鸟系列(十四)代理模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些 ...
- Java设计模式菜鸟系列(十五)建造者模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...
- Java设计模式菜鸟系列(二十二)中介者模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与 ...
- Java设计模式菜鸟系列(十三)建模和实现状态模式
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859 状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像 ...
- Java设计模式菜鸟系列(四)工厂方法模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39760895 工厂方法模式(Factory Method) 工厂方法:顾名思义,就是调用工 ...
随机推荐
- SpringMVC中使用-sqljdbc4.jar
昨天将现在写的Web项目中的数据库由MySQL换成SQLServer,昨天想把MySQL重新安装一下,但是由于不明原因,导致无法安装. 卸载MySQL.删除安装文件.删除注册表.重启电脑.但是安装的时 ...
- 33、深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- 纯CSS实现蜂窝六边形的个性相册
概述 纯CSS实现蜂窝六边形的个性相册 详细 代码下载:http://www.demodashi.com/demo/12804.html 此案例主要用到CSS3的 transform 和 transi ...
- vue组件调用(全局调用和局部调用)
当用vue-cli创建一个项目后, 创建项目的方法: https://www.cnblogs.com/fps2tao/p/9376847.html 编写了组件怎么,在其他组件中调用了? 组件listB ...
- shell脚本 批量转换目录下文件编码
发布:JB01 来源:脚本学堂 [大 中 小] 分享一例shell脚本,实现可以批量转换目录下的文件编码,很实用的一个小shell,有需要的朋友参考下.原文地址:http://www.jb ...
- Atitit. 最佳实践 QA----降低cpu占有率--cpu占用太高怎么办
Atitit. 最佳实践 QA----降低cpu占有率--cpu占用太高怎么办 跟个磁盘队列长度雅十,一到李80%走不行兰.... 1. 寻找线程too 多的.关闭... Taskman>> ...
- MongoDB 学习 第八节 驱动实践
作为系列的最后一篇,得要说说C#驱动对mongodb的操作,目前驱动有两种:官方驱动和samus驱动,不过我个人还是喜欢后者, 因为提供了丰富的linq操作,相当方便. 官方驱动:https://gi ...
- pre 标签的使用
1.在 div为contenteditable = true 中: 换行显示:就使用了pre 标签: 避免了/n 和空格的转换:实现了ctrl + enter 换行:显示的问题: 2.如何超过了div ...
- RCC—使用 HSE/HSI 配置时钟 ---时钟树
本章参考资料:< STM32F4xx 中文参考手册> RCC 章节.学习本章时,配合< STM32F4xx 中文参考手册> RCC 章节一起阅读,效果会更佳,特别是涉及到寄存器 ...
- Ecshop安装的坑,建议不要使用!
最近因为工作的需要,安装了下ecshop,这个曾经的火爆开源程序,现在也呈现出疲态. 1.请看官方的运行环境推荐: 服务器端运行环境推荐·php版本5.0以上5.3以下的版本(推荐使用5.2系列版本) ...