国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

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

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

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

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

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

什么是模板方法模式

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

什么時(shí)候使用模板方法

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

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

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

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

示例

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

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

抽象類

抽象類是這里的關(guān)鍵, 因?yàn)樗瑫r(shí)包含具體和抽象方法. 模板方法往往是具體方法, 其操作是抽象的

兩個(gè)抽象方法分別是addPicture和addTitile,這兩個(gè)操作都包含一個(gè)參數(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);
}