设计模式-简单工厂模式

154 阅读1分钟

简单工厂模式

模式定义

  • 根据参数不同返回不同的类的实例
  • 定义了一个专门的类,来负责创建其他的类的实例,被创建的类通常是有相同的基类(父类)

模式结构

  1. Factory: 工厂角色 主要负责实现创建所有实例的内部逻辑
  2. Product: 抽象产品角色 抽象产品是创建的所有对象的父类,负责描述所有实例所共有的公共接口
  3. 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]);
}