美文网首页
行为型设计模式->模板模式

行为型设计模式->模板模式

作者: liu66_net | 来源:发表于2018-12-04 11:09 被阅读0次
  • 了解迪米特法则

  • 迪米特法则
    1. 一个对象应该对其他对象保持最少的了解
    2. 尽量降低类与类之间的耦合
    3. 类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大
  • 一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
    特定:灵活度高,可扩展性强。
<?php  
  
// 抽象模板类  
abstract Class SetMealModel  
{  
    /**    
     * A,B套餐    
     * @var string    
     */   
    public $name;  
  
    /**    
     * 初始化构造A,B套餐   
     * @access public     
     * @param  string $_name   
     */   
    function __construct($_name)  
    {  
        $this->name =$_name;  
    }  
  
    /**    
     * 模板方法的方法   
     * @access public   
     */   
    public function Make()  
    {  
        $this->MakeDrink();  
        $this->MakeFood();  
        echo $this->name."完成<br/>";  
    }  
    /**    
     *  抽象饮料制作方法   
     * @access public   
     */   
    public abstract function MakeDrink();  
      
    /**    
     *  抽象饮料主食方法   
     * @access public   
     */  
    public abstract function MakeFood();  
}  
  
// 具体A套餐  
Class AsetMeal extends SetMealModel  
{  
    /**    
     * 初始构造A套餐   
     * @access public     
     * @param  string $name   
     */   
    function __construct($name = "A套餐")  
    {  
        parent::__construct($name);  
    }  
    /**    
     *  具体饮料制作方法   
     * @access public   
     */  
    function MakeDrink()  
    {  
        echo $this->name."饮料:雪碧<br/>";  
    }  
    /**    
     *  具体主食制作方法   
     * @access public   
     */  
    function MakeFood()  
    {  
        echo $this->name."主食:照烧鸡排饭<br/>";  
    }  
}  
  
// B套餐  
Class BsetMeal extends SetMealModel  
{  
    /**    
     * 初始构造B套餐   
     * @access public     
     * @param  string $name   
     */   
    function __construct($name = "B套餐")  
    {  
        parent::__construct($name);  
    }  
    /**    
     *  具体饮料制作方法   
     * @access public   
     */  
    function MakeDrink()  
    {  
        echo $this->name."饮料:可乐<br/>";  
    }  
    /**    
     *  具体主食制作方法   
     * @access public   
     */  
    function MakeFood()  
    {  
        echo $this->name."主食:咖喱猪排饭<br/>";  
    }  
}  

相关文章

网友评论

      本文标题:行为型设计模式->模板模式

      本文链接:https://www.haomeiwen.com/subject/enqmcqtx.html