国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP設計模式(九):原型設計模式

warnerwu / 2131人閱讀

摘要:原型設計模式中的構造函數使用創建新對象時,并不會觸發類的構造函數。事實上,使用構造函數并不一定是一個好的設計,由于構造函數內的邏輯無法被外部控制,當需要修改一個類構造時的邏輯時,除了修改類的構造函數實現以外,別無他法,這破壞了類的封裝。

原文地址:PHP設計模式(九):原型設計模式

Introduction

在PHP設計模式(八):工廠模式中我們介紹了創建設計模式(Creation patterns)中的工廠模式,下面我們將介紹另一種原型設計模式(Prototype Method)。
在PHP中,原型設計模式依靠cloning復制對象來實現。通過cloning構造的對象,將大量節省新對象的構造時間。

何時使用原型設計模式?

簡單來說,當你希望根據已有的對象來創建新對象時。
為什么會有這種需求?想象一下,你在做細胞分裂的項目,每一個細胞都是一個對象,現在你有一個細胞類,每一個新的細胞都是由這個類生成的,不同的細胞只是內部的狀態參數不同。
當分裂到第N代的時候,已經和初代大不一樣了,你是愿意使用第N代的副本修改一下呢?還是愿意從初代慢慢推演?

Example

PHP提供了內建的__clone()函數以及clone關鍵字,來實現對象的復制。下面給出一個例子:

id = 1;
    $this->dna = "ATCG";
  }
  public function displayDNA() {
    echo $this->dna . "
";
  }
  function __clone() {
    $this->id = $this->id + 1;
    if ($this->id % 3 == 0) {
      $this->dna = $this->dna . "AT";
    }
    if ($this->id % 5 == 0) {
      $this->dna = $this->dna . "CG";
    }
  }
}

$whaleCell = new WhaleCell();
$whaleCell->displayDNA();
$whaleCell2 = clone $whaleCell;
$whaleCell2->displayDNA();
$whaleCell3 = clone $whaleCell2;
$whaleCell3->displayDNA();
$whaleCell4 = clone $whaleCell3;
$whaleCell4->displayDNA();
$whaleCell5 = clone $whaleCell4;
$whaleCell5->displayDNA();
?>

運行一下:

ATCG
ATCG
ATCGAT
ATCGAT
ATCGATCG

程序簡單的模擬了DNA的遺傳突變,每遺傳三代,DNA增加AT,每遺傳五代,DNA增加CG。

原型設計模式中的構造函數

使用clone創建新對象時,并不會觸發類的構造函數。這也是在使用原型設計模式中需要注意的一點。clone的底層實現并不是調用類的構造函數來創建一個類,而是直接拷貝一個類的地址空間,生成另一個類。這種直接拷貝也帶來了高效。
事實上,使用構造函數并不一定是一個好的設計,由于構造函數內的邏輯無法被外部控制,當需要修改一個類構造時的邏輯時,除了修改類的構造函數實現以外,別無他法,這破壞了類的封裝。

Summary

原型設計模式帶來了另一種創建對象的思路,合理的使用cloning構造對象,將提高程序創建新對象時的效率。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21674.html

相關文章

  • 月光寶盒之網站資源收錄

    摘要:開源的論壇網站開源的論壇源代碼接口管理接口環境下環境一鍵安裝軟件二前端資源中國淘寶鏡像在國內,由于墻的原因,安裝包速度很慢,所以,這里建議使用淘寶提供的鏡像安裝前端資源。 為者常成,行者常至。 一、PHP資料 1、V2EX way to explore 分享和探索的地方2、Laravel China 中國最大的 Laravel 和 PHP 開發者社區3、Composer使用方法4、Pa...

    learning 評論0 收藏0
  • 月光寶盒之網站資源收錄

    摘要:開源的論壇網站開源的論壇源代碼接口管理接口環境下環境一鍵安裝軟件二前端資源中國淘寶鏡像在國內,由于墻的原因,安裝包速度很慢,所以,這里建議使用淘寶提供的鏡像安裝前端資源。 為者常成,行者常至。 一、PHP資料 1、V2EX way to explore 分享和探索的地方2、Laravel China 中國最大的 Laravel 和 PHP 開發者社區3、Composer使用方法4、Pa...

    2bdenny 評論0 收藏0
  • PHP基礎

    摘要:分別為適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。設計模式五適配器模式適配器模式將某個對象的接生成器和協程的實現在這篇文章中,作者針對那些比較難以理解的概念,以一個更為通俗的方式去講明白。。 PHP 源碼注解 PHP 的詳細源碼注解 PHP 字符串操作整理 一些有關字符串的常用操作。 Redis 常見七種使用場景 (PHP 實戰) 這篇文章主要介紹利用 R...

    HtmlCssJs 評論0 收藏0
  • 前端基礎進階():詳解面向對象、構造函數、原型原型

    摘要:我們通過一個簡單的例子與圖示,來了解構造函數,實例與原型三者之間的關系。而原型對象的指向構造函數。于是根據構造函數與原型的特性,我們就可以將在構造函數中,通過聲明的屬性與方法稱為私有變量與方法,它們被當前被某一個實例對象所獨有。 showImg(https://segmentfault.com/img/remote/1460000008593382); 如果要我總結一下學習前端以來我遇...

    Tony_Zby 評論0 收藏0

發表評論

0條評論

warnerwu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<