zoukankan      html  css  js  c++  java
  • 模板方法模式

    问题:
    1. 使用继承时,应该让父类成为子类的模板,所有重复的代码都应该上升到父类去,而不是让每个子类都去重复。
    2. 当要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑使用模板方法来处理。

    概念:
    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    代码示例:

    abstract class People
    {
    	public function greet()
    	{
    		echo '见面问候:';
    		echo $this->doGreet();
    		echo '!';
    	}
    
    	abstract protected function doGreet();
    }
    class Chinese extends People
    {
    	protected function doGreet()
    	{
    		return '哈喽';
    	}
    }
    class English extends People
    {
    	protected function doGreet()
    	{
    		return 'Hello';
    	}
    }
    $Chinese = new Chinese();
    $Chinese->greet();
    echo '<br>';
    $English = new English();
    $English->greet();
    

    “解释器模式”的代码示例中也使用了模板方法模式:https://www.cnblogs.com/wujuntian/p/9657388.html

    效果:
    1. 通过把不变行为搬移到超类,去除子类中的重复代码,很好地实现了代码复用。
    2. 模板方法是一种分离具体类的简单方法。

  • 相关阅读:
    浏览器切换窗口事件
    icheck的使用
    datetimepicker —— 日期选择控件
    apktool
    生成证书
    Jadx
    js call、apply和bind
    1号台风来了
    Linux内核编译和测试
    华中科技大学电子地图
  • 原文地址:https://www.cnblogs.com/wujuntian/p/9774991.html
Copyright © 2011-2022 走看看