简单工厂模式
模式定义
- 根据参数不同返回不同的类的实例
- 定义了一个专门的类,来负责创建其他的类的实例,被创建的类通常是有相同的基类(父类)
模式结构
- Factory: 工厂角色 主要负责实现创建所有实例的内部逻辑
- Product: 抽象产品角色 抽象产品是创建的所有对象的父类,负责描述所有实例所共有的公共接口
- productTaishiyi: 具体产品角色 继承抽象类实现具体类
模式分析
违背开闭原则(对扩展开放,对修改关闭)
要点:传入一个参数就可以获得想要的对象
使用环境
调用者不用关注创建细节
工厂类负责创建的对象较少时,逻辑不会过于复杂(改动少时,使用较好)
// 简单工厂模式
class Factory {
static factory(type: number) {
switch (type) {
case 1:
return new productTaishiyi();
case 2:
return new productMaZha();
default:
return new productMaZha();
}
}
}
// 抽象产品对象
abstract class Product {
}
// 以下为两种具体产品对象
/*
太师椅
复古风格
*/
class productTaishiyi extends Product {
constructor() {
super();
console.log("productTaishiyi");
}
}
/*
马札
酒吧用品
*/
class productMaZha extends Product {
constructor() {
super();
console.log("productMaZha");
}
}
let arr = [1,2,2,2,2,1,1,2,1,2,1,2,1,3];
for (let i in arr) {
Factory.factory(arr[i]);
}