什么叫软模板法

发布时间 : 星期三 文章什么叫软模板法更新完毕开始阅读

竭诚为您提供优质文档/双击可除

什么叫软模板法

篇一:模板模式 /** *模板模式

*定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构可以定义该算法的某些特定步骤 * */

abstractclasstemplatebase {

publicfunctionmethod1() {

echo\ \ }

publicfunctionmethod2() {

第 1 页 共 19 页

echo\ \ }

publicfunctionmethod3() {

echo\ \ }

publicfunctiondosomething() {

$this->method1(); $this->method2(); $this->method3(); } }

classtemplateobjectextendstemplatebase { }

classtemplateobject1extendstemplatebase {

publicfunctionmethod3() {

第 2 页 共 19 页

echo\ \ } }

classtemplateobject2extendstemplatebase {

publicfunctionmethod2() {

echo\ \ } } //实例化

$objtemplate=newtemplateobject(); $objtemplate1=newtemplateobject1(); $objtemplate2=newtemplateobject2(); $objtemplate->dosomething(); $objtemplate1->dosomething(); $objtemplate2->dosomething();

abstractclass(抽象类):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。该模板方法不仅调用前面的抽象方

第 3 页 共 19 页

法,也可以调用其他的操作,只要能完成自身的使命。 concreteclass(具体类):实现父类中的抽象方法以完成算法中与特定子类相关的步骤。根据上面对定义的分析,以及例子的说明,可以看出模板方法适用于以下情况: 1.一次性实现一个算法的不变的部分, 并将可变的行为留给子类来实现。

2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯了。

3.控制子类扩展。模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。比如上面runbare()方法就只在runtest前面适用setup方法。如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:一是在api中不体现出你的模板方法;二、将你的模板方法置为final就可以了。

可以看出,使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体实现。这样你在实现子类的时候,根本不需要对业务流程有太多的了解。 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以

第 4 页 共 19 页

联系合同范文客服:xxxxx#qq.com(#替换为@)