Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
这段时间在学习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)函数,只是返回的对象需要做类型转换,原则一致)

下篇说说抽象工厂和工厂方法吧
posted on 2011-05-02 16:57 ccsdu2009 阅读(1601) 评论(0)  编辑 收藏 引用 所属分类: 设计模式Java Antroid

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理