設計模型系列-簡單工廠 – JAVA編程語言程序開發技術文章

設計模型系列-簡單工廠這段時間在學習Android,也要學點jav方面的編程知識
乘著這個機會,俺就總結下學過和使用過的設計模式,並使用java寫下


先說簡單工廠
簡單工廠屬於工廠模式的一種,不過似乎不在GOF模式之列.
一句話描述:簡單工廠就是根據給定要求生成給定對象
簡單的java版本代碼如下:
public interface Product
{
    abstract public void Call();
};


public Pen implements Product
{
    public void Call()
    {
       
    }
};


public Book implements Product
{
    public void Call()
    {
       
    }
};



public clas Factory
{
    public Product CreateProducrt(String name)
    {
        if(name.equals(“Pen”))
            return Pen.class.newInstance();
        else if(name.equals(“Book”))
            return Book.class.newInstance();
        return null;
    }
};


 



簡單工廠就是根據輸入標簽返回給定的對象實例


很顯然,簡單工廠的主要缺陷就在於:如果需要增加一個新的產品那就需要修改其產品生成函數


另外,如果把工廠和產品對象合二為一就變成瞭如下的形式:
public class Object
{
    public static ObjectCreateObject(String name);
    other function.
};這類似於MFC中CObject


簡單工廠的一個使用例子如下(之前我寫的GUI):
class WidgetFactory
{
public:
    Widget* CreateWidgetByName(const std::string& name);     
};在這裡如果傳入Spin則返回一個new Spin,傳入一個Slider則返回一個new Slider對象
如果我增加一個新的Widget對象,則需要把CreateWidgetByName函數修改下(當然可以使用Object::CreateObject(name)函數,隻是返回的對象需要做類型轉換,原則一致)


下篇說說抽象工廠和工廠方法吧

發佈留言