1. 介绍 工厂模式(Factory Pattern),根据不同的名称输入返回不同类的实例,一般用来创建同一类对象。工厂模式的主要思想是将对象的创建与对象的实现分离。 2. 生活中的示例我们去 KFC 购买汉堡,只需直接点餐、取餐,不用自己亲手做 KFC 要「封装」做汉堡的工作,做好直接给购买者 在类似场景中,这些例子有以下特点: 访问者只需要知道产品名,就可以从工厂获得对应实例。 访问者不关心实例创建过程。 3. 分类 工厂模式分为简单工厂模式、工厂方法模式、抽象工厂模式。 4. 简单工厂模式 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 简单工厂模式包含如下角色: Factory:工厂角色 工厂角色负责实现创建所有实例的内部逻辑 Product:抽象产品角色 抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口 ConcreteProduct:具体产品角色 具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。 4.1 实现 类图: AmericanoCoffee、LatteCoffee和CappuccinoCoffee都是继承Coffee 代码 abstract class Coffee { constructor(public name: string) { } } class AmericanoCoffee extends Coffee { constructor(public name: string) { super(name); } } class LatteCoffee extends Coffee { constructor(public name: string) { super(name); } } class CappuccinoCoffee extends Coffee { constructor(public name: string) { super(name); } } class Café { static order(name: string) { switch (name) { case "Americano": return new AmericanoCoffee("美式咖啡"); case "Latte": return new LatteCoffee("拿铁咖啡"); case "Cappuccino": return new LatteCoffee("卡布奇诺"); default: return null; } } } console.log(Café.order("Americano")); console.log(Café.order("Latte")); console.log(Café.order("Cappuccino")); 4.2 前端应用场景4.2.1 jQuery jQuery class jQuery{ constructor(selector){ let elements = Array.from(document.querySelectorAll(selector)); let length = elements?elements.length:0; for(let i=0;i