這段時間在學習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)函數,只是返回的對象需要做類型轉換,原則一致)
下篇說說抽象工廠和工廠方法吧