Java 什么';定义具有依赖关系的接口的原则是什么?

Java 什么';定义具有依赖关系的接口的原则是什么?,java,inversion-of-control,method-signature,Java,Inversion Of Control,Method Signature,哪个依赖项应该作为参数定位在方法签名中,哪个不应该?因为我们有像spring这样的IoC容器,所以大多数依赖项都可以通过它注入 对于java.util.concurrent.Executor: public interface Executor { void execute(Runnable command); } 接口可以是 public interface Executor { void execute(); } 另一种情况是,在传统的web应用程序中,计数器可能是这

哪个依赖项应该作为参数定位在方法签名中,哪个不应该?因为我们有像spring这样的IoC容器,所以大多数依赖项都可以通过它注入

对于
java.util.concurrent.Executor

public interface Executor {

    void execute(Runnable command);
}
接口可以是

public interface Executor {

    void execute();
}
另一种情况是,在传统的web应用程序中,计数器可能是这样写的

public interface CounterManager {

    int query(User user);//user is a runtime information
}
由于spring提供了请求范围,
User
也可以被注入

public interface Counter {

    int query();//get user through Injected
}
是否有一些原则或最佳实践可供选择?谢谢

是否有一些原则或最佳实践可供选择?谢谢

您可以使用“编码复杂性规则”作为指导。无论是短期还是长期降低代码复杂度的方法都是好的。任何提高它的东西都是不好的

如果您开始使用DI容器注入所有内容,那么最终将得到一个大小为Merriam Webster Dictionary的DI设置文件


如果某件事情非常简单,可以作为参数传递给方法,为什么要用DI容器使事情复杂化?

有什么优秀的工具来测量代码复杂度或耦合度吗?@Anderson: