抽象工厂和工厂方法对比

简介: 抽象工厂和工厂方法对比

工厂方法:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。 在工厂里面可以对对象的创建做严格的定义,client端直接通过工厂创建出来就可以使用了。拥有多个工厂的方式我们称为多工厂方法模式,如果只有一个工厂我们可以去掉抽象类直接定义一个static(用static修饰可以不用初始化工厂直接返回产品,也可以不用static)的方法返回对象,这种叫做简单工厂或者静态工厂模式优点和缺点是一样的:新加一个产品需要相应的产品类和一个工厂子类。


抽象工厂:

为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定他们的具体实现类。

例如:

Q3和Q7有不同的轮胎、发动机、制动系统。虽然生产的零件不同,型号不同。但是根本上都有共同的约束,就是轮胎、发动机、制动系统。设计如下:


需要一个抽象工厂,里面有三个接口分别为生产轮胎、发动机、制动系统,抽象类

需要三个抽象产品分别为轮胎、发动机、制动系统,抽象接口

需要实现上面的三个抽象接口,定义出每个接口不通的对象,比如:普通轮胎和越野轮胎

需要两个具体类继承自上面的抽象类,实现具体的工厂,比如:生产Q3的工厂和生产Q7的工厂

在客户端new出对应的具体工厂并调用对应的生产方法


区别:

工厂方法模式: 只有一个抽象产品类,具体工厂类只能创建一个具体产品类的实例

抽象工厂模式: 有多个抽象产品类 ,具体工厂类能创建多个具体产品类的实例


目录
相关文章
|
6月前
|
设计模式 Java
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
工厂方法模式是怎么变抽象工厂的
工厂方法模式是怎么变抽象工厂的
37 0
|
C++
工厂方法VS简单工厂
工厂方法VS简单工厂
60 0
|
设计模式
抽象工厂
抽象工厂
57 0
简单工厂、工厂、抽象工厂总结
简单工厂、工厂、抽象工厂总结
51 0
|
C# uml
C#简单工厂总结
C#简单工厂总结
53 0
|
设计模式 缓存 Java
简单工厂不简单
简单工厂不简单
简单工厂不简单
|
设计模式 C++
简单工厂VS工厂方法VS抽象工厂
简单工厂VS工厂方法VS抽象工厂
113 0
简单工厂VS工厂方法VS抽象工厂
简单工厂
《基础系列》
120 0
简单工厂
|
设计模式 Java
工厂模式(简单工厂、工厂方法、抽象工厂)(1)
工厂模式(简单工厂、工厂方法、抽象工厂)(1)
157 0
工厂模式(简单工厂、工厂方法、抽象工厂)(1)