随着时间的推移,在java项目中引入了大量的实用方法,以实现更复杂,更简单的任务.
当使用静态方法时,我们在代码中引入紧耦合,这使得我们的代码更难以测试,特别是如果实用方法非常复杂.
我只是认为现在很难管理和测试这些实用程序.请指导我避免使用这些实用程序方法,以及如何组织现有项目以删除所有STATIC实用程序.
你能帮我避免静态方法吗?
与当前可用的其他答案相矛盾:静态方法很糟糕!
它们确实引入了强耦合。是的,在某些情况下这是可以接受的。是的,您可以通过使内部使用的策略可交换来在静态方法内部进行接缝。但根据经验,静态仍然很糟糕。
回答这个问题,如何摆脱静态方法。很简单:将它们放在适当的对象上。所有的静电都消失了。我们改进了代码吗?还没有多少。如果我们更换
callToStaticMethod()
Run Code Online (Sandbox Code Playgroud)
和
new X().callToNoLongerStaticMethod()
Run Code Online (Sandbox Code Playgroud)
我们用构造函数调用替换了静态调用,构造函数调用本质上只是另一个静态方法。但现在你X只是另一个依赖项,所以你可以注入它:
class A{
private final X x;
A(X aX){
x = aX;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:不需要为此使用 Spring 或任何其他框架。如果您觉得它提供一个使用默认实现的构造函数。如果您是纯粹主义者,请引入 X 的接口。
A不依赖于实现的测试X变得微不足道且显而易见。X以任何方式更换都相同。
| 归档时间: |
|
| 查看次数: |
4354 次 |
| 最近记录: |