工厂方法模式与抽象工厂模式的区别

工厂方法模式 与 抽象工厂模式的区别


前言:很多程序员分不清楚几个工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)。在前面的博文(工厂方法模式)中,我已经简单说明了简单工厂模式与工厂方法模式的区别,这里我简单归纳说明一下工厂方法模式与抽象工厂模式的区别。这是我理解玩抽象工厂模式后的笔记。


一、  工厂方法部分

1、   工厂方法使用的是类。

2、   用的方法是继承。

3、   利用工厂方法创建对象,需要扩展一个类,并覆盖他的工厂方法。

4、   工厂方法用来创建对象。其实整个工厂方法模式只不过就是通过子类来创建对象。换句话说,工厂方法模式只负责将客户从具体类型汇总解耦。

5、   创建一个产品。

6、   工厂方法模式可以把你的客户代码从需要实例化的具体类中解耦。或者如果你目前还不知道将来需要实例化哪些具体类时,也可以用工厂方法模式。工厂方法模式的使用很简单,只要吧工厂方法继承成子类,并实现工厂方法的工厂就可以了。


二、  抽象工厂模式

1、   抽象工厂模式使用的是对象。

2、   用的方法是对象的组合。

3、   抽象工厂提供一个用来创建产品家族的抽象类型,这儿类型的子类定义了产品被产生的方法。要想使用这个工厂,必须先实例化它,然后将它传入一些针对抽象类型所写的代码中。所以,和工厂方法一样,抽象工厂可以把客户从所使用的实际具体产品中解耦。

优点:即抽象工厂的另一个优点是可以把一群相关的产品集合起来。

4、   创建整个产品家族的模式。

5、   当你需要创建产品家族和想让制造的相关产品集合起来时,你可以使用抽象工厂。


三、  工厂方法模式和抽象工厂模式,这两种模式都是将对象创建的过程封装起来,以便将代码从具体类解耦。


附:当然,这里仅仅是我自己现阶段对两种工厂方法的理解,可能有一些没有说明白或者错误,请斟酌。



如有好的建议,可留言或发至笔者邮箱:[email protected]


 

你可能感兴趣的:(java,设计模式)