The*_*dor 3 java singleton design-patterns
我正在实现一个程序,该程序使用具有单例行为的共享实用程序类。
实用程序类的一个实例在主线程中创建并传递给所有其他实例化的对象:
SomeUtil util = new SomeUtil();
...
Foo foo = new Foo(util, arg1, arg2)
Bar bar = new Bar(util, arg3, arg4, arg5)
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式来实现这个(即设计模式)?
正如其他人所提到的,Singleton 可以作为替代方案。请注意,您当前的设计很容易进行单元测试(因为您正在注入SomeUtil依赖项,因此可以在单元测试期间轻松地将其替换为模拟对象),而 Singleton 使单元测试变得笨拙和困难:
话虽如此,如果它是一个真正的实用程序类,即它没有内部状态,并且它不依赖于任何会使单元测试变得困难的东西(如数据库或文件系统),则可以将其用作一个单例(尽管这引出了一个问题,为什么你需要实例化它——通常实用程序类只有静态方法和一个私有构造函数来防止实例化)。