这段时间在学习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)函数,只是返回的对象需要做类型转换,原则一致)
下篇说说抽象工厂和工厂方法吧