人人人妻人人人妻人人人,99精品国产综合久久久久五月天 ,欧美白人最猛性XXXXX,日韩AV无码免费播放

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      PHP設(shè)計模式之模板方法模式定義與用法詳解

PHP設(shè)計模式之模板方法模式定義與用法詳解

標(biāo)簽: 發(fā)布日期:2018-04-18 21:57:48 297

本文實例講述了PHP設(shè)計模式之模板方法模式定義與用法。分享給大家供大家參考,具體如下:

什么是模板方法模式

模板方法(Template Method)設(shè)計模式中使用了一個類方法templateMethod(), 該方法是抽象類中的一個具體方法, 這個方法的作用是對抽象方法序列排序,具體實現(xiàn)留給具體類來完成.關(guān)鍵在于模板方法模式定義了操作中算法的"骨架",而由具體類來實現(xiàn).

什么時候使用模板方法

如果已經(jīng)明確算法中的一些步驟, 不過這些步驟可以采用多種不同的方法實現(xiàn), 就可以使用模板方法調(diào)試.如果算法中的步驟不變, 可以把這些步驟留給子類具體實現(xiàn).在這種情況下, 可以使用模板方法設(shè)計模式來組織抽象類中的基本操作(函數(shù)/方法).然后由子類來實現(xiàn)應(yīng)用所需的這些操作.

還有一種用法稍微復(fù)雜一些, 可能需要把子類共同的行為放在一個類中, 以避免代碼重復(fù).

如果使用多個類來解決同一個大型問題, 可能很快就會出現(xiàn)重復(fù)代碼.

還有一點,可以使用模板方法模式控制子類擴(kuò)展,也就是所謂的"鉤子".

示例

在PHP編程中,可能經(jīng)常會遇到一個問題: 要建立帶圖題的圖像. 這個算法相當(dāng)簡單, 就是顯示圖像, 然后的圖像下面顯示文本.

由于模板設(shè)計中只涉及兩個參與者, 所以這是最容易理解的模式之一, 同時也非常有用. 抽象建立templateMethod(),并由具體類實現(xiàn)這個方法.

抽象類

抽象類是這里的關(guān)鍵, 因為它同時包含具體和抽象方法. 模板方法往往是具體方法, 其操作是抽象的

兩個抽象方法分別是addPicture和addTitile,這兩個操作都包含一個參數(shù), 分別表示圖像的URL信息和圖像標(biāo)題.

Template.php

<?php
abstract class Template
{
  protected $picture;
  protected $title;
  public function display($pictureNow, $titleNow)
  {
    $this->picture = $pictureNow;
    $this->title = $titleNow;
    $this->addPicture($this->picture);
    $this->addTitle($this->title);
  }
  abstract protected function addPicture($picture);
  abstract protected function addTitle($title);
}