設計模式(DesignPatterns)筆記之一:AbstractFactory

字號:

定義:提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。提供創(chuàng)建對象的接。
    工廠模式是我們最常用的模式,是用來創(chuàng)建對象的,它就相當于創(chuàng)建對象的new。
    例如我們有一個類Example,我們要創(chuàng)建Example的對象:
    Example example=new Example();
    或
    Example example=new Example(參數(shù));
    如果創(chuàng)建Example時做的事情不是如賦值這樣簡單的事,可能是很長一段代碼,如果也寫入構(gòu)造函數(shù)中,那明顯的就違背了面向?qū)ο蟮脑瓌t.
    我們需要將創(chuàng)建實例的責任與使用實例的責任分開, 使得
    Example example=new Example(參數(shù));
    就是簡單的責任:使用Example這個實例;而創(chuàng)建Example的任務就交給了Factory工廠模式.
    按照傳統(tǒng)方法,我們?nèi)绻枰^承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)。