<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發(fā)

      導航

      設計模式(五)抽象工廠模式

      1.抽象工廠模式定義

        抽象工廠模式可以說是是工廠方法模式的升級版,當需要創(chuàng)建的產(chǎn)品有多個產(chǎn)品線(產(chǎn)品族)時使用抽象工廠模式是比較好的選擇。那什么是多個產(chǎn)品線呢?拿我們在簡單工廠模式和工廠方法模式中學習的生產(chǎn)電腦的例子來舉例,我們一直都是生產(chǎn)聯(lián)想和惠普的電腦,但是電腦也有多個產(chǎn)品線:臺式機、筆記本和平板等等,聯(lián)想和惠普都在生產(chǎn)這些不同產(chǎn)品線上的電腦,使用工廠方法模式已經(jīng)滿足不了需求,這一篇文章我們就用抽象工廠模式來解決這一問題。

      2.抽象工廠模式簡單實現(xiàn)

      聯(lián)想和惠普生產(chǎn)的電腦分為了兩個產(chǎn)品線,一個臺式機,一個是筆記本。為了解決增加產(chǎn)品線的問題,我們用抽象工廠模式來進行實現(xiàn)。

      ①抽象產(chǎn)品
      首先定義抽象產(chǎn)品類:

      public abstract class DesktopComputer {
        public abstract void start();
      }
      public abstract class NotebookComputer {
         public abstract void start();
      }

      兩個抽象產(chǎn)品類分別為DesktopComputer和NotebookComputer ,用來定義兩個產(chǎn)品線:臺式機和筆記本。它們都定義了start方法,用來啟動電腦。
      ②具體產(chǎn)品
      具體產(chǎn)品為聯(lián)想和惠普旗下的臺式機和筆記本,如下所示。

      public class LenovoDesktopComputer extends DesktopComputer {
          @Override
          public void start() {
              System.out.println("聯(lián)想臺式電腦啟動");
          }
      }
      
      public class HpDesktopComputer extends DesktopComputer {
          @Override
          public void start() {
              System.out.println("惠普臺式電腦啟動");
          }
      }
      
      public class LenovoNotebookComputer extends NotebookComputer {
          @Override
          public void start() {
              System.out.println("聯(lián)想筆記本電腦啟動");
          }
      }
      public class HpNotebookComputer extends NotebookComputer {
          @Override
          public void start() {
              System.out.println("惠普筆記本電腦啟動");
      }

      ③抽象工廠
      接著創(chuàng)建生產(chǎn)電腦的抽象工廠,如下所示,

      public abstract class ComputerFactory {
          public abstract DesktopComputer createDesktopComputer();
          public abstract NotebookComputer createNotebookComputer();
      }

      定義了兩個方法,分別用來生產(chǎn)臺式電腦和筆記本電腦。

      ④具體工廠
      定義聯(lián)想和惠普工廠:

      public class LenovoFactory extends ComputerFactory {
          @Override
          public DesktopComputer createDesktopComputer() {
              return new LenovoDesktopComputer();
          }
          @Override
          public NotebookComputer createNotebookComputer() {
              return new LenovoNotebookComputer();
          }
      }
      
      public class HpFactory extends ComputerFactory {
          @Override
          public DesktopComputer createDesktopComputer() {
              return new HpDesktopComputer();
          }
      
          @Override
          public NotebookComputer createNotebookComputer() {
              return new HpNotebookComputer();
          }
      }

      聯(lián)想工廠和惠普工廠用來生產(chǎn)臺式機和筆記本這兩個不同產(chǎn)品線的電腦。

      ⑤客戶端調(diào)用
      最后編寫客戶端:

      public class Client {
          public static void main(String[]args) {
              ComputerFactory lenocoFactory=new LenovoFactory();
              lenocoFactory.createDesktopComputer().start();
              lenocoFactory.createNotebookComputer().start();
              ComputerFactory hpFactory=new HpFactory();
              hpFactory.createDesktopComputer().start();
              hpFactory.createNotebookComputer().start();
          }
      }

      分別用LenovoFactory和HpFactory生產(chǎn)臺式和筆記本電腦,并調(diào)用start方法啟動它們。
      運行結(jié)果為:
      聯(lián)想臺式電腦啟動
      聯(lián)想筆記本電腦啟動
      惠普臺式電腦啟動
      惠普筆記本電腦啟動

      接下來給出這個例子的UML圖,更便于理解,如下所示。

      3.抽象工廠模式的優(yōu)缺點

      優(yōu)點
      具體類的創(chuàng)建實例過程與客戶端分離,客戶端通過工廠的抽象接口操縱實例,客戶端并不知道具體的實現(xiàn)是誰。

      缺點
      如果增加新的產(chǎn)品族則也需要修改抽象工廠和所有的具體工廠。

      抽象工廠模式的使用場景

      • 一個系統(tǒng)不依賴于產(chǎn)品線實例如何被創(chuàng)建、組合和表達的細節(jié)。
      • 系統(tǒng)中有多于一個的產(chǎn)品線,而每次只使用其中某一產(chǎn)品線。
      • 一個產(chǎn)品線(或是一組沒有任何關系的對象)擁有相同的約束。

       

      抽象工廠模式與工廠方法模式最大的區(qū)別:抽象工廠中每個工廠可以創(chuàng)建多種類的產(chǎn)品;而工廠方法每個工廠只能創(chuàng)建一類

       https://blog.csdn.net/carson_ho/article/details/54910287

       

      posted on 2018-06-21 19:47  安卓筆記俠  閱讀(413)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 99精品久久久中文字幕| 好男人社区神马在线观看www| 久久精品中文字幕有码| 国内精品自在拍精选| 日韩精品亚洲专区在线播放 | 久久亚洲av成人无码软件| 精品日韩人妻中文字幕| 日本一区二区三区四区黄色| 午夜成人无码免费看网站| 中文字幕亚洲综合久久青草| 国产91精品一区二区亚洲| 久久国产精品亚洲精品99| 全免费A级毛片免费看无码| 国产高清在线男人的天堂| 无码h片在线观看网站| 深夜国产成人福利在线观看| 国产中年熟女高潮大集合| 九九久久人妻一区精品色| 亚洲欧美自偷自拍视频图片| 成人免费xxxxx在线观看| 真实单亲乱l仑对白视频| 精品国产熟女一区二区三区| 亚洲国产成人精品无码区蜜柚| 中文字幕在线国产精品| 国产在线无码不卡播放| 精品久久久久久无码中文字幕| 377P欧洲日本亚洲大胆| 日韩av无码一区二区三区| 国产成AV人片久青草影院| 横山县| 亚洲自拍偷拍福利小视频| xxxx丰满少妇高潮| 丰满少妇高潮在线播放不卡| 色呦呦九九七七国产精品| 亚洲美免无码中文字幕在线| 少妇高潮喷水久久久影院| 欧洲美熟女乱av在免费| 极品尤物被啪到呻吟喷水| 亚洲va中文字幕无码久久| 国产精品国产精品偷麻豆| 日韩深夜视频在线观看|