joh*_*y g 13
几天前在这里回答了一个类似的问题,嘲笑一个单身人士.关于嘲笑单身人士的行为,最初的帖子是C#.Net,但仍应适用.
关于单例模式,它本身并没有任何问题 - 在许多情况下我们希望集中逻辑和数据.但是,单例和静态类之间存在很大差异.将单例构建为静态类硬编码,实现应用程序中的每个使用者 - 这使得单元测试非常困难!
您要做的是为您的单身人士定义一个界面,公开您的消费者使用的方法.您的消费者反过来通过实例化它们来传递对实现类的引用[通常这是您的应用程序,或者如果您熟悉依赖注入\控制反转,则为容器].
正是这个框架,无论是实例化消费者,还是负责确保一个且只有一个实例浮动.从静态类到接口引用实际上并没有那么大的飞跃[如上面的链接所示],你只是失去了全局可访问实例的便利性 - 我知道,全球引用非常诱人,但是Luke背弃了黑暗面,你也可以!
一般来说,最佳实践建议避免静态引用,并鼓励对接口进行编程.请记住,仍然可以应用具有这些约束的单例模式.遵循这些准则,您应该没有问题单元测试您的工作:)
希望这可以帮助!
singleton!= public static class,而不是singleton == single instance