小哈兒的 學習日記

          像瘋子一樣去戰斗!
          posts - 13, comments - 0, trackbacks - 0, articles - 0
          設計模式(Design Patterns)筆記之一:Abstract Factory

          定義:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。提供創建對象的接。

          工廠模式是我們最常用的模式,是用來創建對象的,它就相當于創建對象的new。
          例如我們有一個類Example,我們要創建Example的對象:

          Example example=new Example();

          Example example
          =new Example(參數);

          如果創建Example時做的事情不是如賦值這樣簡單的事,可能是很長一段代碼,如果也寫入構造函數中,那明顯的就違背了面向對象的原則.
          我們需要將創建實例的責任與使用實例的責任分開, 使得

          Example example=new Example(參數);

          就是簡單的責任:使用Example這個實例;而創建Example的任務就交給了Factory工廠模式.

          按照傳統方法,我們如果需要繼承Example類,生成MyExample,就需要定義Example為Interface,然后,不斷繼承這個Interface,生成許多子類,造成以后代碼維護是如此的困難。

          如果,我們開始就采用了工廠模式,也許就沒有這么多的煩惱了。

          我們生成一個Factory,它專門負責生成Example的實例。
          public class Factory {
               
          public static Example getIntance() 
             
                    
          if(flag == 1)
                       
          return new MyExample();
                    
          if(flag == 2)
                       
          return new YourExample();
               }

          }


          然后,那么在你的程序中,如果要實例化MyExample時.就使用

          Example example=Factory.getIntance();//還有其它標志,不具體寫了。

          具體使用:
          工廠模式有以下三種:
          1. 簡單工廠(Simple Factory)
          2. 工廠方法(Factory Method);
          3. 抽象工廠(Abstract Factory)。

          我們先看一段代碼
          public abstract class Factory{
            
          public abstract MyExample creator();
            
          public abstract YourExample creator(); 
          }


          public class FirstFactory extends Factory{
            
          public MyExample creator(){
               
            }

            
          public YourExample creator(){
               
            }

          }


          public class SecondFactory extends Factory{
            
          public MyExample creator(){
               
            }

            
          public YourExample creator(){
               
            }

          }


          這里,我們需要創建多個對象,復雜性提高,于是需要采用Abstract Factory來封裝共同屬性和方法,而將不同的屬性和方法通過子類來實現。

          簡而言之,工廠模式的目的就是用來實現實例分發。

          工廠模式中幾種類型的一些差別:
          簡單工廠模式是根據參數來決定產生實例;
          簡單工廠模式, 核心是一個實類;
          工廠方法模式的核心是一個抽象工廠類;
          工廠方法模式可以允許很多實的工廠類從抽象工廠類繼承下來, 從而可以在實際上成為多個簡單工廠模式的綜合;
          工廠方法一般只創建一個實例,而Abstract Factory創建多個實例。
          主站蜘蛛池模板: 景德镇市| 新源县| 专栏| 凌海市| 东兴市| 郯城县| 丽江市| 龙井市| 辽源市| 银川市| 青海省| 阳春市| 若羌县| 宁德市| 汝城县| 合作市| 上高县| 赣州市| 杨浦区| 呼伦贝尔市| 开江县| 江川县| 浦县| 丹棱县| 五华县| 新建县| 廊坊市| 千阳县| 浦县| 武安市| 丹巴县| 伊川县| 东乌珠穆沁旗| 景谷| 湖北省| 延安市| 耿马| 顺平县| 曲沃县| 芦溪县| 乳山市|