国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

淺析php創建者模式

2024-05-04 23:28:03
字體:
來源:轉載
供稿:網友
本文通過實例向我們展示了php設計模式中的創建者模式,及創建者模式所應用的場景,這里推薦給大家。
 
 

創建者模式:

在創建者模式中,客戶端不再負責對象的創建與組裝,而是把這個對象創建的責任交給其具體的創建者類,把組裝的責任交給組裝類,客戶端支付對對象的調用,從而明確了各個類的職責。
應用場景:創建非常復雜,分步驟組裝起來。

 

復制代碼代碼如下:

<?php
/**
 * 創建者模式
 */
//購物車
class ShoppingCart {
       //選中的商品
    private $_goods = array();
    //使用的優惠券
    private $_tickets = array();
       public function addGoods($goods) {
              $this->_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();
?>

 

可以看出,使用創建者模式對內部數據復雜的對象封裝數據組裝過程后,對外接口就會非常簡單和規范,增加修改新數據項也不會對外部造成任何影響。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜君县| 务川| 滕州市| 稻城县| 通江县| 施秉县| 崇明县| 绍兴县| 焦作市| 嵩明县| 怀集县| 耿马| 泽州县| 鸡泽县| 临颍县| 清流县| 原平市| 依安县| 新和县| 和顺县| 东乌珠穆沁旗| 彭水| 微山县| 白玉县| 安顺市| 岗巴县| 海丰县| 柘城县| 绥芬河市| 当涂县| 江达县| 濮阳县| 读书| 南城县| 青龙| 安陆市| 辽阳县| 静乐县| 衡水市| 喀喇沁旗| 衡水市|