php实现设计模式之 模板方法模式

<?php
/**
 * 模板模式
 *
 * 定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构可以定义该算法的某些特定步骤
 *
 */
abstract class TemplateBase
{
	public function Method1()
	{
		echo "abstract Method <br/>";
	}

	public function Method2()
	{
		echo "abstract Method2<br/>";
	}

	public function Method3()
	{
		echo "abstract Method3<br/>";
	}

	public function doSomeThing()//骨架,上面三个是步骤,可以在子类中延迟实现
	{
		$this->Method1();
		$this->Method2();
		$this->Method3();
	}
}

class TemplateObject extends TemplateBase
{
}

class TemplateObject1 extends TemplateBase
{
	public function Method3()
	{
		echo "TemplateObject1 Method3<br/>";
	}
}

class TemplateObject2 extends TemplateBase
{
	public function Method2()
	{
		echo "TemplateObject2 Method2<br/>";
	}
}

// 实例化
$objTemplate = new TemplateObject();
$objTemplate1 = new TemplateObject1();
$objTemplate2 = new TemplateObject2();

$objTemplate->doSomeThing();
echo ‘<br />‘;
$objTemplate1->doSomeThing();
echo ‘<br />‘;
$objTemplate2->doSomeThing();
?>

  UML类图如下:

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。