首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

模板方法方式

2012-07-03 
模板方法模式?模板方法模式是一个比较有意思的模式,先看一下定义模板方法模式:在一个方法中定义一个算法的

模板方法模式

?

模板方法模式是一个比较有意思的模式,先看一下定义

模板方法模式:在一个方法中定义一个算法的骨架,而将一些实现步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

?

如果引入项目中的讲解,就是系统规定一些操作步骤,在实现的时候必须遵守这些步骤来执行,但每一步是如何实现的要自己定义

那么看一下这个例子

?

例:学校要求教员讲课的流程是

(1)宣布课程开始

(2)介绍本章内容

(3)讲解知识点

(4)课题总结

(5)宣布课程结束

但每一步具体如何做是教员自己的安排

?

那如何应用模板方法模式实现这个需求呢?首先抽象出一个类(模板)


//模板方法模式
public abstract class Template {

?//教员上课,此方法为模板方法,用final声明,不能被子类重写
?public final void giveLesson(){
??beginLesson();
??introduceLesson();
??explainLesson();
??tallLesson();
??endLesson();
?}
?
?//介绍课程,没有具体实现细节
?public abstract void introduceLesson();
?
?//讲解知识点,没有具体实现细节
?public abstract void explainLesson();
?
?//课堂总结,没有具体实现细节
?public abstract void tallLesson();
?
?//宣布课程开始,为私有方法,体现方法的封装性
?private void beginLesson(){
??System.out.println("宣布开始上课!");
?}
?
?//宣布课程结束,为私有方法,体现方法的封装性
?private void endLesson(){
??System.out.println("宣布课程结束!");
?}
}

接下来实现老师的类,如下


public class JavaTeacher extends Template {
?//讲解知识点
?@Override
?public void explainLesson() {
??System.out.println("讲解知识点:java 封装的应用!");
?}

?//介绍课程
?@Override
?public void introduceLesson() {
??System.out.println("介绍课程:java oop");
?}
?
?//课堂总结
?@Override
?public void tallLesson() {
??System.out.println("课堂总结:学好java,多思考、多练习");
?}

}

?无论各个方法如何实现,都要遵守模板规定的业务流程

以上就是模板方法模式的一个实现例子

?

http://blog.sina.com.cn/s/blog_8020e41101012bfp.html

热点排行