2010-07-19 52 views
2

好吧即时将要保持这非常简单。对于类似于应用程序中的db处理程序,哪种方法最适合:Singleton,Registry模式,静态配置类或配置文件。单处理器,注册表或配置文件的数据库处理程序

我一直在阅读有关这方面的信息,似乎有很多矛盾的想法。

我明白,这不会是一个适合所有解决方案,但通常这种类型的问题的最佳做法是什么。

回答

1

永远不要使用Singleton,这只不过是一个响亮的巨大的全局变量,它的初始化绑定了你的进程的生命周期而不是它管理的资源。

你想要的是一个注入到每个依赖它的范围内的对象,换句话说,你正在寻找的模式是依赖注入。

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

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

对于中等复杂程度的应用程序,请与您的平台/语言/操作系统原生注册表工具集成以提供默认值。

对于生产应用程序,使用IoC-DI容器,并将config/db/etc对象外部构建到您的应用程序类并在运行时注入。

关键是要避免拥有一个进程静态配置对象,因为这会干扰测试,软重启以及更难以迁移到更灵活的配置方法。

+1

这里有个小提示......在讨论设计模式时,您可能想避免使用“never”一词。例如,你提到的有关Singleton生命周期的问题在许多PHP Web应用程序中确实不是什么大问题。 – 2010-07-20 09:03:47