我学会了,工厂方法模式

157 阅读1分钟

前言

工厂方法模式属于创建型模式,这个类型的设计模式是将 对象的创建和使用解耦了,花式的去创建对象。

工厂方法模式

应用场景:用于创建实现相同接口的同一类型的类的对象,给个指定类型就能给你创建一个具体的对象。

理解:对象的创建和使用解耦了,并且支持根据参数来获取具体的对象。

namespace creative_mode_01 {

    // 子类枚举
    enum ClassName {
        LogOne,
        LogTwo
    }

    // 打印日志
    interface IConsoleLog {
        printLog(): void
    }

    // 工厂类
    class MyFactory {

        static map: Map<ClassName, IConsoleLog> = new Map();

        static addConsoleLog(key: ClassName, value: IConsoleLog) {
            this.map.set(key, value)

            return this
        }

        static getConsoleLog(key: ClassName) {
            return this.map.get(key)
        }

    }

    // 子类的实现 

    class LogOne implements IConsoleLog {
        printLog(): void {
            console.log('log one 。。。')
        }
    }

    class LogTwo implements IConsoleLog {
        printLog(): void {
            console.log('log two 。。。')
        }
    }

    // 给这个工厂添加产品
    MyFactory.addConsoleLog(ClassName.LogOne, new LogOne()).addConsoleLog(ClassName.LogTwo, new LogTwo());


    // 从工厂中拿出对象来使用
    MyFactory.getConsoleLog(ClassName.LogOne)?.printLog()
    MyFactory.getConsoleLog(ClassName.LogTwo)?.printLog()

}