什么叫软模板法Word格式.docx
- 文档编号:12962764
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:10
- 大小:17.72KB
什么叫软模板法Word格式.docx
《什么叫软模板法Word格式.docx》由会员分享,可在线阅读,更多相关《什么叫软模板法Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
abstractmethod2
publicfunctionmethod3()
abstractmethod3
publicfunctiondosomething()
$this->
method1();
method2();
method3();
classtemplateobjectextendstemplatebase
classtemplateobject1extendstemplatebase
templateobject1method3
classtemplateobject2extendstemplatebase
templateobject2method2
//实例化
$objtemplate=newtemplateobject();
$objtemplate1=newtemplateobject1();
$objtemplate2=newtemplateobject2();
$objtemplate->
dosomething();
$objtemplate1->
$objtemplate2->
abstractclass(抽象类):
定义了一到多个的抽象方法,以供具体的子类来实现它们;
而且还要实现一个模板方法,来定义一个算法的骨架。
该模板方法不仅调用前面的抽象方法,也可以调用其他的操作,只要能完成自身的使命。
concreteclass(具体类):
实现父类中的抽象方法以完成算法中与特定子类相关的步骤。
根据上面对定义的分析,以及例子的说明,可以看出模板方法适用于以下情况:
1.一次性实现一个算法的不变的部分,
并将可变的行为留给子类来实现。
2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
其实这可以说是一种好的编码习惯了。
3.控制子类扩展。
模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。
比如上面runbare()方法就只在runtest前面适用setup方法。
如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:
一是在api中不体现出你的模板方法;
二、将你的模板方法置为final就可以了。
可以看出,使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。
而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体实现。
这样你在实现子类的时候,根本不需要对业务流程有太多的了解。
模板方法模式是类的行为模式。
准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。
这就是模板方法模式的用意。
模板方法模式的结构
模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。
模板方法模式需要开发抽象类和具体子类的设计师之间的协作。
一个设计师负责给出一
个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。
代表这些具体逻辑步骤的方法称做基本方法(primitivemethod);
而将这些基本方法汇总起来的方法叫做模板方法(templatemethod),这个设计模式的名字就是从此而来。
模板方法所代表的行为称为顶级行为,其逻辑称为顶级逻辑。
模板方法模式的静态结构图如下所示:
这里涉及到两个角色:
抽象模板(abstracttemplate)角色有如下责任:
■定义了一个或多个抽象操作,以便让子类实现。
这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。
■定义并实现了一个模板方法。
这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。
顶级逻辑也有可能调用一些具体方法。
具体模板(concretetemplate)角色又如下责任:
■实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。
■每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。
源代码
抽象模板角色类,abstractmethod()、hookmethod()等基本方法是顶级逻辑的组成步骤,这个顶级逻辑由templatemethod()方法代表。
publicabstractclassabstracttemplate{//抽象模板角色类
/**
*模板方法
publicvoidtemplatemethod(){
//调用基本方法
abstractmethod();
hookmethod();
concretemethod();
*基本方法的声明(由子类实现)
protectedabstractvoidabstractmethod();
*基本方法(空方法)
protectedvoidhookmethod(){}
*基本方法(已经实现)
privatefinalvoidconcretemethod(){
//业务相关的代码
具体模板角色类,实现了父类所声明的基本方法,abstractmethod()方法所代表的就是强制子类实现的剩余逻辑,而hookmethod()方法是可选择实现的逻辑,不是必须实现的。
publicclassconcretetemplateextendsabstracttemplate{//具体模板角色类
//基本方法的实现
@override
publicvoidabstractmethod(){
//重写父类的方法
publicvoidhookmethod(){
模板模式的关键是:
子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。
每当定义一个新的子类时,不要按照控制流程的思路去想,而应当按照“责任”的思路去想。
换言之,应当考虑哪些操作是必须置换掉的,哪些操作是可以置换掉的,以及哪些操作是不可以置换掉的。
使用模板模式可以使这些责任变得清晰。
模板方法模式中的方法
模板方法中的方法可以分为两大类:
模板方法和基本方法。
模板方法
一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。
一个抽象类可以有任意多个模板方法,而不限于一个。
每一个模板方法都可以调用任意多个具体方法。
基本方法
基本方法又可以分为三种:
抽象方法(abstractmethod)、具体方法(concretemethod)和钩子方法(hookmethod)。
●抽象方法:
一个抽象方法由抽象类声明,由具体子类实现。
在java语言里抽象方法以abstract关键字标示。
●具体方法:
一个具体方法由抽象类声明并实现,而子类并不实现或置换。
●钩子方法:
一个钩子方法由抽象类声明并实现,而子类会加以扩展。
通常抽象类给出的实现是一个空实现,作为方法的默认实现。
在上面的例子中,abstracttemplate是一个抽象类,它带有三个方法。
其中abstractmethod()是一个抽象方法,它由抽象类声明为抽象方法,并由子类实现;
hookmethod()是一个钩子方法,它由抽象类声明并提供默认实现,并且由子类置换掉。
concretemethod()是一个具体方法,它由抽象类声明并实现。
默认钩子方法
一个钩子方法常常由抽象类给出一个空实现作为此方法的默认实现。
这种空的钩子方法叫做“donothinghook”。
显然,这种默认钩子方法在缺省适配模式里面已经见过了,一个缺省适配模式讲的是一个类为一个接口提供一个默认的空实现,从而使得缺省适配类的子类不必像实现接口那样必须给出所有方法的实现,因为通常一个具体类并不需要所有的方法。
命名规则
命名规则是设计师之间赖以沟通的管道之一,使用恰当的命名规则可以帮助不同设计师之间的沟通。
钩子方法的名字应当以do开始,这是熟悉设计模式的java开发人员的标准做法。
在上面的例子中,钩子方法hookmethod()应当以do开头;
在httpservlet类中,也遵从这一命名规则,如doget()、dopost()等方法。
使用场景
考虑一个计算存款利息的例子。
假设系统需要支持两种存款账号,即货币市场(moneymarket)账号和定期存款(certificateofdeposite)账号。
这两种账号的存款利息是不同的,因此,在计算一个存户的存款利息额时,必须区分两种不同的账号类型。
这个系统的总行为应当是计算出利息,这也就决定了作为一个模板方法模式的顶级逻辑应当是利息计算。
由于利息计算涉及到两个步骤:
一个基本方法给出账号种类,另一个基本方法给出利息百分比。
这两个基本方法构成具体逻辑,因为账号的类型不同,所以具体逻辑会有所不同。
显然,系统需要一个抽象角色给出顶级行为的实现,而将两个作为细节步骤的基本方法留给具体子类实现。
由于需要考虑的账号有两种:
一是货币市场账号,二是定期存款账号。
系统的类结构如下图所示。
篇二:
练习型软件模板
教育科学与技术学院
阿伏伽德罗定律练习软件设计方案
专业:
教育技术学班级:
11级网络二班姓名:
李盼盼学号:
110806131216指导老师:
张成功
阿伏伽德罗定律
一:
计划
1、确定项目范围:
表1.1具体项目范围列表
2、分析学习者特征
二:
设计
1、分析学习内容:
本软件主要为引导学生自主学习“阿伏伽德罗定律”,掌握阿伏伽德罗公式各种变行公示的使用,先通过一些简单的实验,让同学们了解到这些结果,然后引进阿伏伽德
罗定律,并且解释原因,最后做练习题,让同学们更加了解并熟练使用阿伏伽德罗定律。
软件的具体内容包括以下几个方面:
1、实验演示,阿伏伽德罗定律验证,例题解析。
2、习题难易渐进程度:
★简单★一般★困难3、习题类型包括:
填空题选择题简答题
2、软件内容的逻辑结构图:
图2.1结构图
3、确定课件结构:
4、创作流程图:
图2.2流程图
4、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 什么 模板