AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
| 抽象工厂方法设计模式 | | | --- | --- | 工厂方法有个问题是每个工厂只生产一个产品; 导致存在大量的工厂; 类比我们现实中的工厂; 生产牙刷造了一个牙刷厂; 生成鞋刷又造了一个鞋刷厂; 但是其实牙刷和鞋刷都属于刷子; 这就是产品族的概念了; 它们同属于一个产品族; 我们只造一个刷子厂同时生产一个产品族下的牙刷和鞋刷即可; [TOC] 应用场景 要实例话的对象充满不确定性可能会改变的时候; 要创建的对象的数目和类型是未知的; [TOC] 结构 多个 interface 或者 abstract 产品父类; 多个实现 interface 或者继承 abstract 的具体产品类; 1个 interface 或者 abstract 工厂父类; 1个实现 interface 或者继承 abstract 的具体工厂类; 具体的工厂类里面有多个方法分别实例化具体的产品类; [TOC] >优缺点: 抽象工厂的优点是产品跟客户端完全分离; 我们在 Client 中只调用了 Factory; 甚至连产品的类名都不需要知道; 但是缺点也很明显; 那如果要增加一个 category 表; 那我们需要增加 Category接口类、MySQLCategory、SQLiteCategory; 还需要在 Factory、MySQLFactory、SQLiteFactory 中增加 createCategory 方法; 分别新增3个文件和改动3个文件才行; 对于聪(lan)明(duo)的程序猿来说; 这想想都是一种会呼吸的痛; 之前文章一直都在说设计模式之前是可以相互配合的; 下篇文章我们就用简单工厂配合抽象工厂来减轻这种痛苦; [TOC] 具体的看【白俊遥】的工厂方法模式 代码在 /php.com/core/DesignPatterns/AbstractFactory