Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns db处理程序的单例、注册表或配置文件_Design Patterns - Fatal编程技术网

Design patterns db处理程序的单例、注册表或配置文件

Design patterns db处理程序的单例、注册表或配置文件,design-patterns,Design Patterns,好吧,我会让这一切变得非常简单。哪种方法最适合应用程序中的db处理程序:单例、注册表模式、静态配置类或配置文件 我一直在读这方面的文章,似乎有很多相互矛盾的观点 我知道不会有一个一刀切的解决方案,但通常这类问题的最佳实践是什么。不要使用单例,这只是一个巨大的全局变量,其初始化绑定到进程的生命周期,而不是它所管理的资源 您想要的是将对象注入依赖它的每个作用域,换句话说,您正在寻找的模式是依赖注入 对于最简单的应用程序,只需使用命令行参数和配置对象 对于稍复杂的应用程序,允许从配置文件创建默认配置对

好吧,我会让这一切变得非常简单。哪种方法最适合应用程序中的db处理程序:单例、注册表模式、静态配置类或配置文件

我一直在读这方面的文章,似乎有很多相互矛盾的观点


我知道不会有一个一刀切的解决方案,但通常这类问题的最佳实践是什么。

不要使用单例,这只是一个巨大的全局变量,其初始化绑定到进程的生命周期,而不是它所管理的资源

您想要的是将对象注入依赖它的每个作用域,换句话说,您正在寻找的模式是依赖注入

对于最简单的应用程序,只需使用命令行参数和配置对象

对于稍复杂的应用程序,允许从配置文件创建默认配置对象,然后通过命令行参数进行修改

对于较为复杂的应用程序,请与平台/语言/操作系统本机注册表功能集成以提供默认设置

对于生产应用程序,请使用IOCDI容器,并在应用程序类外部构建config/db/etc对象,并在运行时注入


关键是要避免使用process static config对象,因为这会干扰测试、软重启,并使迁移到更灵活的配置方法更加困难。

这里有一个小说明。。。在讨论设计模式时,您可能希望避免使用“从不”一词。例如,您提到的关于单例生命周期的问题在很多PHP web应用程序中都不是什么大问题。