我学会了,工厂方法模式

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

前言

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

工厂方法模式

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

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

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()

}
目录
相关文章
|
消息中间件 负载均衡 监控
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
3462 1
|
10月前
|
Rust 安全 区块链
探索Rust语言:系统编程的新选择
【10月更文挑战第27天】Rust语言以其安全性、性能和并发性在系统编程领域受到广泛关注。本文介绍了Rust的核心特性,如内存安全、高性能和强大的并发模型,以及开发技巧和实用工具,展示了Rust如何改变系统编程的面貌,并展望了其在WebAssembly、区块链和嵌入式系统等领域的未来应用。
|
自然语言处理 Linux C++
make和Cmake都有什么区别?(内附使用详解)
make: 是一个构建工具,它的任务是读取 Makefile 文件,并基于这些文件中的指令执行具体的构建操作。Makefile 文件包含了如何构建项目的规则,make 负责解析这些规则并执行必要的命令来编译和链接源代码,生成可执行文件或库。 CMake: 是一个构建系统生成器。它并不直接进行编译或链接,而是根据项目中 CMakeLists.txt 文件的内容生成一个或多个构建系统的描述文件(如 Makefile 或 Visual Studio 解决方案)。CMake 提供了一种更高级、更抽象的方式来描述构建过程,这使得它能够跨平台地生成各种构建系统。
1190 0
|
存储 监控 关系型数据库
如何升级MySQL版本?
如何升级MySQL版本?
756 2
如何使用IDEA自动生成类图
本文介绍了如何在IntelliJ IDEA中使用快捷键Ctrl+Alt+U自动生成Java类的类图,并提供了截图方法和相关插件的使用说明。
如何使用IDEA自动生成类图
|
Java 关系型数据库 MySQL
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)(1)
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)
226 0
|
API Python Windows
[已解决] openai.error.AuthenticationError: No API key provided. You can set your API key in code using
[已解决] openai.error.AuthenticationError: No API key provided. You can set your API key in code using
785 0
|
Python
189: 素数判定(python)
189: 素数判定(python)