工厂模式小结

参考资料: http://blog.csdn.net/jason0539/article/details/23020989

一、简单工厂(静态工厂):

工厂模式小结_第1张图片

        组成: 

         1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品
         2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。         
         3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。 

       原理:client通过静态属性区分产品类型,传递给工厂确定生产何种产品,那么每增加一种新产品,都要在工厂类中增加相应的创建业务逻辑,这显然是违背开闭原则的。

二、工厂方法模式 

   

   组成: 

       1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。 
       2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。 
       3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。 
       4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。 

      说白了就是设定工厂接口,每一个新产品就有对应的工厂实现,当产品种类非常多时,会出现大量的与之对应的工厂类,这也不太好

三、抽象工厂

   就是在产品上做文章,产品分多层级就为抽象工厂,单一层级就是普通工厂,如图所示:

工厂模式小结_第2张图片

 

 

如果工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。在本例中,如果一个工厂模式提供2.0排量两厢车和2.4排量两厢车,那么他属于工厂方法模式;如果一个工厂模式是提供2.4排量两厢车和2.4排量三厢车两个产品,那么这个工厂模式就是抽象工厂模式,因为他提供的产品是分属两个不同的等级结构。当然,如果一个工厂提供全部四种车型的产品,因为产品分属两个等级结构,他当然也属于抽象工厂模式了。

你可能感兴趣的:(工厂模式)