設計模式之原廠模式Factory(建立模式)

來源:互聯網
上載者:User

在軟體生產過程中,經常面臨某個對象的建立工作,由於需求的變動,這些對象不斷的變化,但他們的介面相對穩定,怎麼樣把這種易變的對象隔離出來讓其它對象不因它的改變受到影響,在這樣的前提下就產生了原廠模式。

1、原廠模式相當於建立執行個體對象new,所以很常用,舉例說明:

有介面類Sample,及實作類別SampleA、SampleB,可以如下建立,

Sample sA = new SampleA,

Sample sB = new SampleB,

但如果實作類別很多的話,這樣建立起來很麻煩,所以可以建立工廠類Factory,具體實現如下,

class Factory

{

     public static Sample CreateInstance(int casetype)

     {

          swith(casetype)

          {

               case 1:

                    return new SampleA();

                    break;

               case 2:

                    return new SampleB();

                    break;

          }

     }

}

(以下轉)這樣,在整個就不涉及到Sample的具體子類,達到封裝效果,也就減少錯誤修改的機會,這個原理可以用很通俗的話來比喻:就是具體事情做得越多,越容易範錯誤.這每個做過具體工作的人都深有體會,相反,官做得越高,說出的話越抽象越籠統,範錯誤可能性就越少.好象我們從編程式中也能悟出人生道理?呵呵.

2、Factory 方法中還有Factory Method(Factory 方法)與Abstract Factory(抽象工廠),舉例說明:

如果上面例子中還有類Sample2要建立,可以用抽象Factory 方法,如下

public abstract class Factory

{

     public abstract Sample CreateInstance();

 

     public abstract Sample2 CreateInstance();

}

public class SimpleFactory:Factory

{

     public Sample CreateInstance()

     {

          ...

          return new SampleA();

     }

     

     public Sample2 CreateInstance()

     {

          ...

          return new Sample2A();

     }

}

 

public class ComplexFactory:Factory

{

     public Sample CreateInstance()

     {

          ...

          return new SampleB();

     }

     

     public Sample2 CreateInstance()

     {

          ...

          return new Sample2B();

     }

}

抽象工廠有一個關鍵要點,是因為SimpleFactory內,生產Sample和生產Sample2的方法之間有一定聯絡,所以才要將這兩個方法捆綁在一個類中,這個工廠類有其本身特徵,也許製造過程是統一的,比如:製造工藝比較簡單,所以名稱叫SimpleFactory。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.