這段時間在學(xué)習(xí)Android,也要學(xué)點jav方面的編程知識
乘著這個機會,俺就總結(jié)下學(xué)過和使用過的設(shè)計模式,并使用java寫下
先說簡單工廠
簡單工廠屬于工廠模式的一種,不過似乎不在GOF模式之列.
一句話描述:簡單工廠就是根據(jù)給定要求生成給定對象
簡單的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;
}
};
簡單工廠就是根據(jù)輸入標(biāo)簽返回給定的對象實例
很顯然,簡單工廠的主要缺陷就在于:如果需要增加一個新的產(chǎn)品那就需要修改其產(chǎn)品生成函數(shù)
另外,如果把工廠和產(chǎn)品對象合二為一就變成了如下的形式:
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函數(shù)修改下(當(dāng)然可以使用Object::CreateObject(name)函數(shù),只是返回的對象需要做類型轉(zhuǎn)換,原則一致)
下篇說說抽象工廠和工廠方法吧