Brief | 概要
抽象工厂模式比工厂方法模式的抽象化程度更高,它提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的类。
[工厂方法模式](Unity设计模式—工厂方法模式 | 问渠 (wenqu.site))解决了简单工厂模式种工厂类职责太重的问题,但由于工厂方法模式中的每个具体工厂只有一个或者一组重载的工厂方法,只能生产一种产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。
有时候可能需要一个工厂能够提供多种产品对象,一个“产品族”都由同一个工厂来生产,这就是抽象工厂模式的基本思想。
查看抽象工厂设计模式 (refactoringguru.cn)以了解更多。
The Question | 需求
我们继续沿用在[工厂方法模式](Unity设计模式—工厂方法模式 | 问渠 (wenqu.site))里提出的需求:
在你的游戏里,有一个装饰系统。
玩家可以生成各种类型的装饰物:
- 建筑Building,继承Item
- 需要在运行时挂载UnityEngine.AI.NavMeshStacle组件
- 商店Shop,继承BaseBuilding
- 不要挂载NavMeshStacle
- 若shop的id==shop_001,需要在运行时额外挂载一个Fog脚本
- 树Tree,继承Item
- Tree类有一个BeChopDown方法,用于实现被砍伐后的效果
- 读取本地的配置文件,初始化树的属性(伪代码)
- 在TreePool里增加这个数(伪代码)
在这个基础上,策划提了一个新需求——</