简单的工厂模式就是将创建对象的过程单独封装,不需要关心对象创建时候的细节,只需要一股脑将原材料扔进去工厂函数里面,让它来决定返回的是什么样的对象。在工厂函数里面,注意将对象的公共属性抽离,switch 不同类型的特征。
当出现写了很多构造函数、调用了大量了new的时候,就可以考虑使用工厂模式来进行封装代码。
构造器解决的是多个对象实例的问题,简单工厂模式解决的是多个类的问题。当出现多个类、多个工厂共存的时候,应如何处理?👇
这里要插入一个概念:开放封闭原则——软件实体(类、模块、函数)可以拓展,但不可修改。
抽象工厂模式对应的就是用一个超级工厂对应多个工厂,分层抽离提升可对应场景的复杂度。
四个关键角色:
- 抽象工厂(抽象类,不用于生成具体实例)
- 具体工厂(用于生产具体产品的工厂函数)
- 抽象产品(抽象类,不用于生成具体实例)
- 具体产品(用于生产具体产品的构造函数)
需要理解开放封闭原则,掌握es6 class的使用,了解四个关键角色的作用与定位。