麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

php設計模式 抽象工廠模式

2020-03-22 20:20:59
字體:
來源:轉載
供稿:網友
  • 在學習本章之前,請先閱讀簡單工廠模式以及工廠方法模式

    在什么情況下應當使用抽象工廠模式:
    1、一個系統不應當依賴于產品類實例如何被創建、組合和表達的細節,這對于所有的形態的工廠模式都是重要的。
    2、這個系統的產品有多余一個的產品族,而系統只消費其中某一個族的產品。
    3、同屬于同一個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。
    4、系統提供一個產品類的庫,所有的產品以同樣的接口出現,從而使客戶端不依賴于實現。


    案例1:
    還是以農場為例。
    我們的農場分了多個產品線,一個是專門賣北方的蔬菜水果。一個專門賣南方的蔬菜水果。大家可以試著不寫一下,這里就不給出示例了,uml類圖大家可以試著畫一下。


    案例2:
    電腦為例
    電腦分為PC電腦,mac電腦。pc電腦有他組裝需要的cpu、主板、鍵盤 | mac電腦同樣需要這些組件,但是型號不一樣,下面是此示例的uml類圖。

    代碼示例:

    此示例是依據女媧造人而寫的。

      1 <?php  2   3 //此實例是根據女媧造人寫的  4   5 //首先定義一個全局的工廠接口  6 //由陰繩 陽繩來繼承 都要實現舉繩子這個方法  7 interface nvwaRope{  8     html' target='_blank'>public function liftPeopleRope($name);  9     public function liftAnimalRope($name); 10 } 11  12 //定義陰繩 來繼承 nvwaRope 13 class yinRope implements nvwaRope{ 14     public function liftPeopleRope($name){ 15         return new girl($name); 16     } 17  18     public function liftAnimalRope($name){ 19         return new muAnimal($name); 20     } 21 } 22  23 //定義陽繩  24 class yangRope implements nvwaRope{ 25     public function liftPeopleRope($name){ 26         return new boy($name); 27     } 28  29     public function liftAnimalRope($name){ 30         return new gongAnimal($name); 31     } 32 } 33  34  35 //定義一個人的抽象接口 36 interface people{ 37     public function eat(); 38     public function getName(); 39 } 40  41  42 abstract class abstractPeople implements people{ 43     private $name; 44  45     public function __construct($name){ 46         $this->name = $name; 47     } 48  49     public function eat(){ 50         echo $this->name . " eat"; 51     } 52  53     public function getName(){ 54         echo $this->name; 55         return $this->name; 56     } 57  58     //檢查是否有胸 59     public function checkChest(){ 60         return $this->haveChest; 61     } 62 } 63  64 class boy extends abstractPeople{ 65     public $haveChest = false; //男孩沒有胸 66 } 67  68 class girl extends abstractPeople{ 69     public $haveChest = true; //女孩有胸 70 } 71  72  73 //定義一個動物的抽象接口 74 interface animal{ 75     public function eat(); 76     public function sleep(); 77 } 78  79 abstract class abstractAnimal implements animal{ 80     private $name; 81  82     public function __construct($name){ 83         $this->name = $name; 84     } 85  86     public function eat(){ 87         echo $this->name . " eating"; 88     } 89  90     public function sleep(){ 91         echo $this->name . " sleeping"; 92     } 93  94     public function getName(){ 95         echo $this->name; 96         return $this->name; 97     } 98 } 99 100 //定義一個母動物的類101 class muAnimal extends abstractAnimal{102     public $xingbie = "mu";103 }104 105 106 //定義一個公動物的類107 class gongAnimal extends abstractAnimal{108     public $xingbie = "gong";109 }110 111 112 113 //使用方式114 115 //首先獲取工廠的實例 也就是陰繩或者陽繩的實例116 $yinRope = new yinRope();117 118 $people = $yinRope->liftPeopleRope("zhangsan");119 echo $people->eat();120 echo $people->getName();121 var_dump($people->checkChest());122 123 $animel = $yinRope->liftAnimalRope("馬");124 echo $animel->eat();
    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 午夜精品久久久久久中宇 | 亚洲小视频在线 | 深夜免费观看视频 | www.48xx.com| 欧美一级电影网站 | 欧美亚洲国产一区 | 羞羞的视频在线免费观看 | 黄色网址进入 | 国产男女 爽爽爽爽视频 | 色柚视频网站ww色 | 精国品产一区二区三区有限公司 | 56av国产精品久久久久久久 | 国产一区成人 | 男女羞羞视频在线观看免费 | 欧美日韩经典在线 | 成人在线网站 | 一级大片视频 | 91精品国产综合久久婷婷香蕉 | 99re久久最新地址获取 | 免费一级片网站 | 国产午夜免费视频 | 国产美女爽到喷白浆的 | 黄色av网站在线观看 | 久久国产精品免费视频 | 操操操日日日干干干 | 亚洲免费视频一区二区 | 亚洲一区二区成人 | 国产免费成人在线 | 91精品观看91久久久久久国产 | 毛片在哪里看 | 欧美a视频 | 色网免费观看 | 91婷婷射| 精品中文字幕久久久久四十五十骆 | 亚洲精品一区二区三区免 | 欧美日韩影视 | 国产瑟瑟视频 | 精品国产91久久久久久浪潮蜜月 | 免费黄色在线观看网站 | 国产精品一区视频 | 午夜热门福利 |