我有一个Java应用程序,其中包含几个JFrame窗口,这些窗口均从名为BaseWindow的类派生。这些窗口中的每一个都需要访问NetworkConnection对象以将消息发送到服务器。因此,我将NetworkConnection对象实现为单例,并在BaseWindow类中使用以下方法为每个窗口提供了对其的引用

NetworkConnection networkConnectinon = NetworkConnection.getInstance();


这很好。但是,如果这几天不使用单例,那么我想更改它。那我应该用什么代替它呢?

最佳答案

静态getInstance()方法使测试应用程序更加困难,因为您不能用模拟对象替换NetworkConnection,也不能为每个单元测试使用一个新的NetworkConnection实例。

对于您的主类而言,最好通过它们的构造函数将NetworkConnection对象注入每个JFrame中-并创建一个NetworkConnection接口,以便可以使用真实的NetworkConnection或模拟的接口。

这是依赖注入模式。

请注意,如果需要,您的实际NetworkConnection仍然可以是Singleton-这只是将其提供给需要它的对象的另一种方式。

09-08 02:36