posts - 2, comments - 2, trackbacks - 0, articles - 23
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          一、創(chuàng)建模式(Creational Pattern) --> 對類的實例化過程的抽象化
                  分類: 
                      a.類的創(chuàng)建模式        -->把類的創(chuàng)建延遲到子類,從而封裝了子類的具體實現(xiàn)
                      b.對象的創(chuàng)建模式    -->把對象的創(chuàng)建過程動態(tài)的委派給另一個對象,從而動態(tài)的決定客戶端需要哪些類的實例,以及這些類是如何被創(chuàng)建和組合在一起的
                 包含的具體模式有:
                      工廠模式、單(多)例模式、建造模式、原始模型模式 等等
          二、簡單工廠模式(Simple Factory)  --->靜態(tài)工廠方法模式(Static Factory Method Pattern)
                  1.工廠模式分為3種
                         a.簡單工廠模式(Simple Factory)
                         b.工廠方法模式(Factory Method)
                         c.抽象工廠模式(Abstract Factory)
                  2.Simple Factory : 就是由一個工廠對象決定創(chuàng)建出哪一個產(chǎn)品的實例
                  3.UML圖
                      
                  4.簡單測試代碼如下:
                      

           1/**
           2 * 定義一個接口 和 兩個實現(xiàn)類
           3 */

           4public interface IFruit {
           5    /**
           6     * 種植
           7     */

           8    void plant();
           9    
          10    /**
          11     * 生長
          12     */

          13    void grow();
          14}

          15
          16public class Apple implements IFruit {
          17
          18    public void grow() {
          19        System.out.println("Apple grow()");
          20    }

          21
          22    public void plant() {
          23        System.out.println("Apple plant()");
          24    }

          25
          26}

          27
          28public class Orange implements IFruit {
          29
          30    public void grow() {
          31        System.out.println("Orange grow()");
          32    }

          33
          34    public void plant() {
          35        System.out.println("Orange plant()");
          36    }

          37
          38}

          39
          40/**
          41 * 對應(yīng)的字符串不存在的異常處理
          42 */

          43public class BadFruitException extends Exception {
          44
          45    public BadFruitException(String message) {
          46        super(message);
          47    }

          48    
          49}

          50
          51/**
          52 * 簡單工廠類
          53 */

          54public class FruitGardener {
          55    
          56    public static IFruit factory(String which) throws BadFruitException {
          57        if(which.equalsIgnoreCase("apple")) {
          58            return new Apple();
          59        }
           else if(which.equalsIgnoreCase("orange")) {
          60            return new Orange();
          61        }
           else {
          62            throw new BadFruitException("bad fruit request");
          63        }

          64    }

          65}

          66
          67/**
          68 * 測試簡單工廠模式
          69 */

          70public class TestSimpleFactory {
          71
          72    public static void main(String[] args) {
          73        try {
          74            IFruit apple = FruitGardener.factory("apple");
          75            apple.plant();
          76            apple.grow();
          77            
          78            IFruit xx = FruitGardener.factory("xx");
          79            xx.plant();
          80            xx.grow();
          81            
          82        }
           catch (BadFruitException e) {
          83            e.printStackTrace();
          84        }

          85    }

          86}

          三、分析
                  1.從上面的例子可以看出:Simple Factory Pattern 就是由一個工廠類根據(jù)傳入的參數(shù)來決定創(chuàng)建哪一種產(chǎn)品實例.
                  2.Simple-Factory 涉及到3個角色:工廠類角色(Creator) 、抽象產(chǎn)品角色(Product)、具體產(chǎn)品角色(Concrete Product)
                  3.優(yōu)點:實現(xiàn)了對責(zé)任的分割 
                     缺點:當(dāng)產(chǎn)品需要擴展的時候,產(chǎn)品類直接沒有影響,而工廠類就必須修改了~~ 因為工廠類涵蓋了所有產(chǎn)品的創(chuàng)造邏輯
          四:在java中的應(yīng)用
                  1.DateFormat
                     (為一個抽象類,提供static  DateFormat getDateInstance()) : 這里可以粗略的看作 簡單工廠類和抽象產(chǎn)品類的一個合并
                      ---> 具體產(chǎn)品類SimpleDateFormat
              

          主站蜘蛛池模板: 平陆县| 凭祥市| 黄陵县| 永川市| 阜平县| 龙州县| 藁城市| 江山市| 八宿县| 苏州市| 霍邱县| 余江县| 瑞安市| 双城市| 长海县| SHOW| 和平区| 横峰县| 潜山县| 凉城县| 同德县| 阿坝县| 滁州市| 天津市| 璧山县| 四子王旗| 濮阳县| 双鸭山市| 黔南| 平远县| 清苑县| 三门县| 英山县| 台东县| 辽阳县| 阜南县| 华安县| 鹰潭市| 黎城县| 扎兰屯市| 正定县|