首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式之-工厂模式(Factory)

2012-11-07 
设计模式之--工厂模式(Factory)工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那

设计模式之--工厂模式(Factory)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。
工厂模式的形态
工厂模式主要用一下几种形态:
1:简单工厂(Simple Factory)。
2:工厂方法(Factory Method)。
3:抽象工厂(Abstract Factory)。

简单工厂(Simple Factory)
又叫静态工厂,是工厂模式三中状态中结构最为简单的。主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。我们来看一个具体的例子:
假设一家工厂,几生产洗衣机,有生产冰箱,还有空调等等..
我们先为所有产品定义一个共同的产品接口

//创建型号为A的产品工厂public class FactoryA implements Factory{       //创建洗衣机-A       public Washer createWasher(){            return new WasherA();       }       //创建冰箱-A       public Icebox createIcebox(){            return new IceboxA();       }}//创建型号为B的产品工厂public class FactoryB implements Factory{       //创建洗衣机-B       public Washer createWasher(){            return new WasherB();       }       //创建冰箱-B       public Icebox createIcebox(){            return new IceboxB();       }}

这样,我们的抽象工厂就完成了。有上面可以看出,在运用上我觉得工厂方法和抽象工厂,都有自己的应用场景,并没有什么优劣之分,但在应用抽象工厂之前,要先对创建的对象进行系统的分类,这点很重要,好的产品分类规则能为具体工厂类的选择调用和以后的扩展提供清晰的思路. 1 楼 sea7 2008-11-12   很纳闷,你真的了解它们三者的区别吗? 2 楼 tianmo2008 2008-11-12   sea7 写道
很纳闷,你真的了解它们三者的区别吗?

呵呵,现在还在学,没有实际的用过,所以一些理解没那么深刻。有什么建议或觉得我的笔记做的有不对或不足的,请指点一下哦,谢谢了。 3 楼 sea7 2008-11-12   tianmo2008 写道sea7 写道
很纳闷,你真的了解它们三者的区别吗?

呵呵,现在还在学,没有实际的用过,所以一些理解没那么深刻。有什么建议或觉得我的笔记做的有不对或不足的,请指点一下哦,谢谢了。
抽象工厂和工厂方法的区别在于它们的意图不同而不是工厂方法是创建一个产品,而抽象工厂是创建很多产品。

抽象工厂只是创建一系列相互依赖或关联地产品的借口,是针对类的设计模式。

工厂方法是定一个一个接口,让子类去实例化,是针对对象的设计模式。



4 楼 tianmo2008 2008-11-13   sea7 写道
tianmo2008 写道sea7 写道
很纳闷,你真的了解它们三者的区别吗?

呵呵,现在还在学,没有实际的用过,所以一些理解没那么深刻。有什么建议或觉得我的笔记做的有不对或不足的,请指点一下哦,谢谢了。
抽象工厂和工厂方法的区别在于它们的意图不同而不是工厂方法是创建一个产品,而抽象工厂是创建很多产品。

抽象工厂只是创建一系列相互依赖或关联地产品的借口,是针对类的设计模式。

工厂方法是定一个一个接口,让子类去实例化,是针对对象的设计模式。

呵呵,我对工厂方法的理解确实觉得很纳闷,给你这样一说,觉得有点思路了,谢谢了。 5 楼 andylj511 2008-11-13   //洗衣机-A  
public class WasherA implements Washer{  
   public Washer(){  
       System.out.println("洗衣机-A被制造了");  
   }  
}  
 
//洗衣机-B  
public class WasherB implements Washer{  
   public Washer(){  
       System.out.println("洗衣机-B被制造了");  
   }  


你这里每个类实现他们的接口,然后写自己的构造器..好像错了啊

热点排行