php设计模式 Template (模板模式)
前端之家收集整理的这篇文章主要介绍了
php设计模式 Template (模板模式),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子。“使用委派关系代替继承关系”,“尽量使用接口实现而不是抽象类继承”等等专家警告,让我们这些菜鸟对继承“另眼相看”。其实,继承还是有很多自身的优点所在。只是被大家滥用的似乎缺点更加明显了。合理的利用继承关系,还是能对你的系统设计起到很好的作用的。而模板方法模式就是其中的一个使用范例。 GOF给模板方法(Template Method)模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在内容上存在变数的环节。 可以看出来,模板方法模式也是为了巧妙解决变化对系统带来的影响而设计的。使用模板方法使系统扩展性增强,最小化了变化对系统的影响。这一点,在下面的举例中可以很明显的看出来。
<div class="codetitle"><a style="CURSOR: pointer" data="37577" class="copybut" id="copybut37577" onclick="doCopy('code37577')"> 代码如下:
<div class="codebody" id="code37577">
<?
PHP /*
模板模式
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构可以定义该算法的某些特定步骤
/
abstract class TemplateBase
{
public function Method1()
{
echo "abstract Method1
";
} public function Method2()
{
echo "abstract Method2
";
} public function Method3()
{
echo "abstract Method3
";
} public function doSomeThing()
{
$this->Method1();
$this->Method2();
$this->Method3();
}
} class TemplateObject extends TemplateBase
{
} class TemplateObject1 extends TemplateBase
{
public function Method3()
{
echo "TemplateObject1 Method3
";
}
} class TemplateObject2 extends TemplateBase
{
public function Method2()
{
echo "TemplateObject2 Method2
";
}
} // 实例化
$objTemplate = new TemplateObject();
$objTemplate1 = new TemplateObject1();
$objTemplate2 = new TemplateObject2(); $objTemplate->doSomeThing();
$objTemplate1->doSomeThing();
$objTemplate2->doSomeThing();