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) 工厂方法:顾名思义,就是调用工 ...
随机推荐
- ssh 安装笔记
debian 6.0 的一台32位机器,aptitude search openssh-server-x509 没结果(其他机同样源配置是有结果的),于是上内部源下载openssh-server-x5 ...
- Android调用OCR识别图像中的文字
// CharacterExtractor.java // Copyright (c) 2010 William Whitney // All rights reserved. // This sof ...
- Python 函数返回多值
返回多值函数可以返回多个值吗?答案是肯定的.比如在游戏中经常需要从一个点移动到另一个点,给出坐标.位移和角度,就可以计算出新的坐标:# math包提供了sin()和 cos()函数,我们先用impor ...
- MSSQL查找前一天,前一月,前一年的数据,对比当前时间记录查找超过一年,一月,一天的数据
,') ,GETDATE()) ,') ,GETDATE()) ,') ,GETDATE()) ,GETDATE())) ,GETDATE())) ,GETDATE()))
- Orcla 数据库复习2 --子查询和表连接
子查询和表连接 ①.查询挣钱最多的人的名字 SELECT ename,sal FROM emp WHERE sal=(SELECT MAX(sal) FROM emp); ②.查询有哪些人的工 ...
- potplayer 网页调用potplayer播放本地视频
网页调用potplayer播放本地视频 CreateTime--2018年1月3日10:36:24 Author:Marydon 源码展示: <!DOCTYPE html> <h ...
- 关于AWS的备份策略
AWS有一个很强大的功能,就是snapshot,翻译过来就是对EBS进行快照.通俗的说,即是对整个硬盘进行完整的镜像备份.如此一来,在其中一台EC2挂掉的时候,我们迅速的另起一台EC2,并将通过快照恢 ...
- 串口通讯编程一日通3(COMMTIMEOUTS DCB整理)
上一篇看了Overlapped IO模型后,接下来看剩下两个重要结构: 2.COMMTIMEOUTS结构 超时设置 COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置.COM ...
- 注意Hibernate4在开发当中的一些改变
Hibernate4的改动较大只有spring3.1以上版本能够支持,Spring3.1取消了HibernateTemplate,因为Hibernate4的事务管理已经很好了,不用Spring再扩展了 ...
- MySQL5.6 主从复制 ERROR 1776 (HY000): Parameters MASTER_LOG_FILE
主从都开启了gtid,在设置从库的时候遇到了问题 mysql> CHANGE MASTER TO MASTER_HOST=‘xxx’,MASTER_USER='replicant',MASTER ...