合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] ## 概述 亦称:虚拟构造函数、Virtual Constructor、Factory Method <br/> 工厂方法模式建议使用特殊的工厂方法代替对于对象构造函数的直接调用 ## 工厂方法模式结构 **产品 (Product)** 将会对接口进行声明。 对于所有由创建者及其子类构建的对象, 这些接口都是通用的 **具体产品 (Concrete Products)** 是产品接口的不同实现。 **创建者 (Creator)** 类声明返回产品对象的工厂方法。 该方法的返回对象类型必须与产品接口相匹配。 **具体创建者 (Concrete Creators)** 将会重写基础工厂方法, 使其返回不同类型的产品。 >[info] 工厂方法需要有抽象产品,和抽象创建者 ### 图示 ![](blob:https://www.kancloud.cn/7d6c31e6-007a-4497-91e7-2aede197cd57) ### 示例 ![](blob:https://www.kancloud.cn/0ad42219-88b2-44ab-bdcd-b56ad9f96c3f) ## 工厂方法模式适合应用场景 1. 当你在编写代码的过程中, 如果无法预知对象确切类别及其依赖关系时, 可使用工厂方法。 2. 如果你希望用户能扩展你软件库或框架的内部组件, 可使用工厂方法。 3. 如果你希望复用现有对象来节省系统资源, 而不是每次都重新创建对象, 可使用工厂方法。 ## 工厂方法模式优缺点 **优点** 1. 你可以避免创建者和具体产品之间的紧密耦合。 2. 单一职责原则。 你可以将产品创建代码放在程序的单一位置, 从而使得代码更容易维护。 3. 开闭原则。 无需更改现有客户端代码, 你就可以在程序中引入新的产品类型。 **缺点** 1. 应用工厂方法模式需要引入许多新的子类, 代码可能会因此变得更复杂。 最好的情况是将该模式引入创建者类的现有层次结构中。