zoukankan      html  css  js  c++  java
  • 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类图如下:

  • 相关阅读:
    阅读代码
    openSips
    rc.local 问题
    MyBatis框架使用(一)
    【数据结构杂谈】
    【AGC052A】
    【杜教筛学习笔记】
    CF618F Double Knapsack
    [NOI2016] 循环之美
    【BZOJ 4668 冷战】
  • 原文地址:https://www.cnblogs.com/taijun/p/4054712.html
Copyright © 2011-2022 走看看