工厂方法模式 与 抽象工厂模式的区别
前言:很多程序员分不清楚几个工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)。在前面的博文(工厂方法模式)中,我已经简单说明了简单工厂模式与工厂方法模式的区别,这里我简单归纳说明一下工厂方法模式与抽象工厂模式的区别。这是我理解玩抽象工厂模式后的笔记。
一、 工厂方法部分
1、 工厂方法使用的是类。
2、 用的方法是继承。
3、 利用工厂方法创建对象,需要扩展一个类,并覆盖他的工厂方法。
4、 工厂方法用来创建对象。其实整个工厂方法模式只不过就是通过子类来创建对象。换句话说,工厂方法模式只负责将客户从具体类型汇总解耦。
5、 创建一个产品。
6、 工厂方法模式可以把你的客户代码从需要实例化的具体类中解耦。或者如果你目前还不知道将来需要实例化哪些具体类时,也可以用工厂方法模式。工厂方法模式的使用很简单,只要吧工厂方法继承成子类,并实现工厂方法的工厂就可以了。
二、 抽象工厂模式
1、 抽象工厂模式使用的是对象。
2、 用的方法是对象的组合。
3、 抽象工厂提供一个用来创建产品家族的抽象类型,这儿类型的子类定义了产品被产生的方法。要想使用这个工厂,必须先实例化它,然后将它传入一些针对抽象类型所写的代码中。所以,和工厂方法一样,抽象工厂可以把客户从所使用的实际具体产品中解耦。
优点:即抽象工厂的另一个优点是可以把一群相关的产品集合起来。
4、 创建整个产品家族的模式。
5、 当你需要创建产品家族和想让制造的相关产品集合起来时,你可以使用抽象工厂。
三、 工厂方法模式和抽象工厂模式,这两种模式都是将对象创建的过程封装起来,以便将代码从具体类解耦。
附:当然,这里仅仅是我自己现阶段对两种工厂方法的理解,可能有一些没有说明白或者错误,请斟酌。
如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com