This repository has been archived on 2021-09-07. You can view files and clone it, but cannot push or open issues or pull requests.
2018-11-05 21:09:00 +08:00

25 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 抽象工厂模式
> wiki: 抽象工厂模式英语Abstract factory pattern是一种软件开发设计模式。抽象工厂模式提供了一种方式可以将一组具有同一主题的单独的工厂封装起来。在正常使用中客户端程序需要创建抽象工厂的具体实现然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道或关心它从这些内部的工厂方法中获得对象的具体类型因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。
在前面的文章中我们介绍过工厂模式的前两种:
- [简单工厂模式](https://juejin.im/post/5bdbcc08f265da61561eb493)
- [工厂方法模式](https://juejin.im/post/5bdede60518825171a180c44)
而今天要介绍的 `抽象工厂模式` 就是工厂模式中的最后一种了,是前两种模式的补充,
工厂模式用来创建一组相关或者相互依赖的对象,与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构,
我们可以将一种产品等级想象为一个产品族,所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。
还是以 `工厂方法模式` 中我们举的卖包子的例子:
在之前的工厂方法中,需要在齐市和广东开两家包子店,那么就需要从一个工厂接口中实现两个工厂结构体,齐市店和广东店属于两个产品族,猪肉包和三鲜馅包子属于同一个等级结构,
所以我们要添加两个工厂,每个工厂实现两个产品的创建方法:
1. 工厂方法