所以,这是一个非常高级的问题,解决了我多年来一直在做的事情。我知道我的方法可以改进,我正在寻找(或者#34;正确/更好的)生成工厂的方法。
现在已经有一段时间了,我的大脑一直困在写单身工厂。这是工厂的基本伪代码:
public Factory {
private static final INSTANCE = new Factory();
private Factory () {}
public static Factory instance() {
return INSTANCE;
}
public Object createStuff() {
// impl specific factory details here
return null;
}
}
现在,这种方法让我在代码的其他地方变得非常懒惰,而不必在任何地方维护工厂的实例。我最近加强了我的单元测试游戏,并且在出于测试目的而嘲笑工厂时遇到了问题,这让我质疑我的方法。
我听说依赖注入可能是一个很好的方法,我愿意调查它。我目前的一些项目已经走得太远了,无法调整和引入新方法(因此,现有的东西中没有依赖注入)。
所以,底线:有没有依赖注入的更好的方法是什么?
谢谢! 罗布
答案 0 :(得分:0)
你对Spring(使用Spring Boot)感到满意吗?
它开始成为轻量级Java应用程序的事实标准。 它可以为开发完全复用的生产应用程序提供大量代码。
答案 1 :(得分:0)
为了使用DI并使依赖于您的工厂的类可测试您需要使您的工厂实现接口,然后使用工厂的类需要在这些类的构造函数中的工厂实例。然后,这将允许您通过提供存储或模拟工厂来测试这些类,该工厂也会对接口进行操作。
像这样的东西
public interface IFactory
{
object createInstance;
}
public class ClassWithDependencyOnFactory
{
private IFactory factory;
public ClassWithDependencyOnFactory(IFactory factory)
{
this.factory = factory;
}
public void DoSomething()
{
var thing = factory.createInstance();
...
}
}
不要假设您需要使用IoC框架(如Spring)来进行DI或获得它带来的解耦的好处。