摘要:繼續分享設計模式的公開課,這是第三篇創建型模式之創建者模式設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。
繼續分享設計模式的公開課,這是第三篇創建型模式之創建者模式
設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。
創建者模式:
在創建者模式中,客戶端不再負責對象的創建與組裝,而是把這個對象創建的責任交給其具體的創建者類,把組裝的責任交給組裝類,客戶端支付對對象的調用,從而明確了各個類的職責。
應用場景:創建非常復雜,分步驟組裝起來。
_goods[] = $goods; } public function addTicket($ticket) { $this->_tickets[] = $ticket; } public function printInfo() { printf("goods:%s, tickets:%sn", implode(",", $this->_goods), implode(",", $this->_tickets)); } } //假如我們要還原購物車的東西,比如用戶關閉瀏覽器后再打開時會根據cookie還原 $data = array( "goods" => array("衣服", "鞋子"), "tickets" => array("減10"), ); //如果不使用創建者模式,則需要業務類里一步步還原購物車 // $cart = new ShoppingCart(); // foreach ($data["goods"] as $goods) { // $cart->addGoods($goods); // } // foreach ($data["tickets"] as $ticket) { // $cart->addTicket($ticket); // } // $cart->printInfo(); // exit; //我們提供創建者類來封裝購物車的數據組裝 class CardBuilder { private $_card; function __construct($card) { $this->_card = $card; } function build($data) { foreach ($data["goods"] as $goods) { $this->_card->addGoods($goods); } foreach ($data["tickets"] as $ticket) { $this->_card->addTicket($ticket); } } function getCrad() { return $this->_card; } } $cart = new ShoppingCart(); $builder = new CardBuilder($cart); $builder->build($data); echo "after builder:n"; $cart->printInfo(); ?>
可以看出,使用創建者模式對內部數據復雜的對象封裝數據組裝過程后,對外接口就會非常簡單和規范,增加修改新數據項也不會對外部造成任何影響。
想了解更多,來聽公開課吧:http://www.ucai.cn/train?f=17
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20770.html
摘要:但本質是,簡單工廠并未嚴格遵循設計模式的開閉原則,當需要增加新產品時也需要修改工廠代碼。但是工廠方法則嚴格遵守開閉原則,模式只負責抽象工廠接口,具體工廠交給客戶去擴展。 最近開展了三次設計模式的公開課,現在來總結一下設計模式在PHP中的應用,這是第二篇創建型模式之工廠模式。 設計模式的一般介紹在第一篇文章講了,這里就不重復。 工廠模式 實現:定義一個用于創建對象的接口,讓子類決定實...
摘要:最近開展了三次設計模式的公開課,現在來總結一下設計模式在中的應用,這是第一篇創建型模式之單例模式。不過因為不支持多線程所以不需要考慮這個問題了。 最近開展了三次設計模式的公開課,現在來總結一下設計模式在PHP中的應用,這是第一篇創建型模式之單例模式。 一、設計模式簡介 首先我們來認識一下什么是設計模式: 設計模式是一套被反復使用、容易被他人理解的、可靠的代碼設計經驗的總結。 設計模式不...
摘要:繼續分享設計模式的公開課,這是第四篇創建型模式之原型模式設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。設計模式的第一部分,創建型模式就總結完了。下面還有兩部分結構型設計模式和行為型設計模式稍后繼續。 繼續分享設計模式的公開課,這是第四篇創建型模式之原型模式 設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。 原型模式: 用原型實例指定創建對象的種類,并且通過拷貝這個...
摘要:能夠協調調用者和被調用者,能夠在一定程度上降低系統的耦合性。特點低耦合性,獨立性好,安全性應用客戶訪問不到或者被訪問者希望隱藏自己,所以通過代理來訪問自己。 我們接著上面的幾種模式繼續講: 4、組合模式 將對象組合成樹形結構表示部分-整體的層次結構。 特點:靈活性強 應用:對象的部分-整體的層次結構,模糊組合對象和簡單對象處理問題 代碼實現 /** 組合模式* *///繼承模式clas...
摘要:我們分三篇文章來總結一下設計模式在中的應用,這是第一篇創建型模式。二提煉設計模式的幾個原則開閉原則模塊應對擴展開放,而對修改關閉。工廠模式實現定義一個用于創建對象的接口,讓子類決定實例化哪一個類。設計模式的第一部分,創建型模式就總結完了。 我們分三篇文章來總結一下設計模式在PHP中的應用,這是第一篇創建型模式。一、設計模式簡介 首先我們來認識一下什么是設計模式: 設計模式是一套被反復使...
閱讀 2892·2019-08-30 15:55
閱讀 1995·2019-08-30 14:02
閱讀 1232·2019-08-29 15:23
閱讀 1001·2019-08-29 11:27
閱讀 457·2019-08-26 11:43
閱讀 3184·2019-08-26 10:32
閱讀 1249·2019-08-23 14:41
閱讀 3296·2019-08-23 14:41