设计
我有至少2个其他类使用的存储库类。 此存储库类需要初始化 - 成本高(查询数据库)。 现在,我在任何需要的地方创建独立的资源库实例。 问题是,每次创建存储库时都必须进行初始化。 如何设计这样的存储库以便TDD友好? 我脑海中的第一件事是辛格尔顿,但它不是解决方案。
你使用任何类型的IOC容器吗? Unity是我选择的容器,它包含一个ContainerControledLifetimeManager,它使您的类成为单例,但不是由您自己管理。
我希望通过TDD友好的你的意思是'可测试'的代码。 对于Singleton ObjectX,我认为最常见的方法是将“控制创建” 的责任 (SRP) 分割为另一个类,以便ObjectX完成它应该完成的所有工作。
然后你有另一个类ObjectXFactory或Host,或者你想调用它的任何东西,它负责为所有客户端提供一个实例(并在需要时提供线程同步等等)
您只需要教导并遵守Team规范,即不要调用ObjectX构造函数 - 始终使用ObjectXFactory.CreateInstance()。 (如果您发现自己有意识/纪律问题,请将ObjectX的ctor标记为internal,并且只能通过偷偷摸摸的InternalsVisibleToAttribute向测试程序集显示)HTH
TDD部分的一个答案是学习嘲笑。
查看Stephen Walther撰写的这篇优秀文章:
http://stephenwalther.com/blog/archive/2008/03/23/tdd-introduction-to-rhino-mocks.aspx
链接地址: http://www.djcxy.com/p/78793.html上一篇: design
下一篇: Singleton instance as static field vs. static variable in getInstance() method