<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                3.**抽象工廠模式** 提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類。抽象工廠模式又稱為Kit模式,屬于對象創建型模式。 此模式是對工廠方法模式的進一步擴展。在工廠方法模式中,一個具體的工廠負責生產一類具體的產品,即一對一的關系,但是,如果需要一個具體的工廠生產多種產品對象,那么就需要用到抽象工廠模式了。 為了便于理解此模式,這里介紹兩個概念: * **產品等級結構**:產品等級結構即產品的繼承結構,如一個抽象類是電視機,其子類有海爾電視機、海信電視機、TCL電視機,則抽象電視機與具體品牌的電視機之間構成了一個產品等級結構,抽象電視機是父類,而具體品牌的電視機是其子類。 * **產品族 :**在抽象工廠模式中,產品族是指由同一個工廠生產的,位于不同產品等級結構中的一組產品,如海爾電器工廠生產的海爾電視機、海爾電冰箱,海爾電視機位于電視機產品等級結構中,海爾電冰箱位于電冰箱產品等級結構中。 `角色:` 抽象工廠(AbstractFactory):擔任這個角色的是抽象工廠模式的核心,是與應用系統的商業邏輯無關的。 具體工廠(Factory):這個角色直接在客戶端的調用下創建產品的實例,這個角色含有選擇合適的產品對象的邏輯,而這個邏輯是與應用系統商業邏輯緊密相關的。 抽象產品(AbstractProduct):擔任這個角色的類是抽象工廠模式所創建的對象的父類,或它們共同擁有的接口 具體產品(Product):抽象工廠模式所創建的任何產品對象都是一個具體的產品類的實例。 `UML類圖:` ![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid108299labid2293timestamp1479204958020.png) `示例代碼:`:`AbstructFactory.class.php` ~~~php <?php interface TV{ public function open(); public function watch(); } class HaierTv implements TV { public function open() { echo "Open Haier TV <br>"; } public function watch() { echo "I'm watching Haier TV <br>"; } } class LenovoTv implements TV { public function open() { echo "Open Lenovo TV <br>"; } public function watch() { echo "I'm watching Lenovo TV <br>"; } } interface PC{ public function work(); public function play(); } class LenovoPc implements PC { public function work() { echo "I'm working on a Lenovo computer <br>"; } public function play() { echo "Lenovo computers can be used to play games <br>"; } } class HaierPc implements PC { public function work() { echo "I'm working on a Haier computer <br>"; } public function play() { echo "Haier computers can be used to play games <br>"; } } abstract class Factory{ abstract public static function createPc(); abstract public static function createTv(); } class HaierFactory extends Factory { public static function createTv() { return new HaierTv(); } public static function createPc() { return new HaierPc(); } } class LenovoFactory extends Factory { public static function createTv() { return new LenovoTv(); } public static function createPc() { return new LenovoPc(); } } $haierFactory = new HaierFactory(); $haierTv = $haierFactory->createTv(); $haierTv->open(); $haierTv->watch(); $haierPc = $haierFactory->createPc(); $haierPc->work(); $haierPc->play(); $lenovoFactory = new LenovoFactory(); $lenovoPc = $lenovoFactory->createPc(); $lenovoPc->work(); $lenovoPc->play(); $lenovoTv = $lenovoFactory->createTv(); $lenovoTv->open(); $lenovoTv->watch(); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看