定义:
为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定他们的具体类。
我理解的:
一切基于抽象,假设生产汽车,我们拟定汽车三大组成部分:发动机、轮胎、制动系统。首先不管什么汽车,三大件在汽车中担任的职责是一样的,但是不同的汽车又在具体三大件上有不同。那么我们可以给予三大件的基础共性把其抽象出来,同时汽车生产也可以抽象出来。
抽象工厂模式:
image.png
汽车生产抽象工厂:
image.png
抽象轮胎类:
image.png
抽象发动机类:
image.png
抽象制动系统类:
image.png
具体(普通)轮胎类:
image.png
具体(SUV)轮胎类:
image.png
发动机和制动系统实现类不在赘述;
汽车工厂实现类:
image.png
image.png
demo:
image.png image.png
总结:
抽象工厂方法模式的优点:
一个显著的优点是分离接口与实现,客户端使用抽象工厂来创建需要的对象,而客户端根本就不知道具体的实现是谁,客户端只是面向产品的接口编程而已,使其从具体的产品实现中解耦,同时基于接口与实现的分离,使抽象该工厂方法模式在切换产品类时更加灵活、容易。
抽象工厂方法模式的缺点:
上面我们也有所涉及,一是类文件的爆炸性增加,二是不太容易扩展新的产品类,因为每当我们增加一个产品类就需要修改抽象工厂,那么所有具体工厂类均会被修改。
网友评论