1、异同
相同点:
都提供了一种方法创建对象,而不是直接使用new 运算符。
都隐藏了对象的创建细节,使得客户端无需知道对象的具体类名。
系统复杂度都比较高
不同点:
从结构上来看,抽象工厂模式中的工厂类可以创建多种不同的产品,而工厂方法模式中的工厂类只能创建一种产品。
在使用场景上,抽象工厂模式适用于创建一组相关的产品,而工厂方法模式适用于创建单个产品。
2、结构
抽象工厂模式的结构如下:
抽象工厂类:声明了创建产品的抽象方法。
具体工厂类:实现了在抽象工厂中声明的创建产品的方法。
抽象产品类:声明了产品的接口。
具体产品类:实现了抽象产品类中声明的接口。
抽象工厂中包含抽象产品
工厂方法模式的结构如下:
抽象工厂类:声明了创建产品的工厂方法。
具体工厂类:实现了在抽象工厂中声明的工厂方法,创建具体的产品。
抽象产品类:声明了产品的接口。
具体产品类:实现了抽象产品类中声明的接口。
总的来说,抽象工厂模式与工厂方法模式的区别在于,前者是针对一组相关的产品创建,而后者是针对单个产品的创建。