如何在Java中更改接口及其后果?
在应用程序中更改接口的最佳实践是什么。如果这个接口已经被许多Java类实现,那么改变它的最佳方式是什么?你打算扩展到一个新的班级吗?你会使用任何设计模式吗?或者你使用授权(我不认为有任何方式使用授权)?您是否打算使用不推荐使用的注释 这是最好的解决方案吗如何在Java中更改接口及其后果?,java,interface,Java,Interface,在应用程序中更改接口的最佳实践是什么。如果这个接口已经被许多Java类实现,那么改变它的最佳方式是什么?你打算扩展到一个新的班级吗?你会使用任何设计模式吗?或者你使用授权(我不认为有任何方式使用授权)?您是否打算使用不推荐使用的注释 这是最好的解决方案吗 public interface interface1 { } public interface interface2 extends interface1 { public void newMethod() } 如果您拥有代码,那么更改接
public interface interface1
{
}
public interface interface2 extends interface1
{
public void newMethod()
}
如果您拥有代码,那么更改接口的最佳方法是修复对它的所有引用,而不是将不推荐的代码留在身边。有两种方法可以立即想到
MyInterface2扩展了MyInterface
也被广泛使用,因为它不会破坏现有的实现者如果您的解决方案是在代码审计或审查中提出的,我不会拒绝它-没关系,IMHO。如果其他所有实现的类都不需要此方法
interface1
,那么我认为这样做可以避免重大的代码更改
那么,下一个问题,我们是否需要在接口2
(或者)只需要在所需的类中使用它就足够了
如果您不想将这个新方法定义为
contract
,换句话说,没有其他类需要实现,那么我甚至不会创建接口2
,您可以使用设计模式。
抽象工厂或桥接模式可以使用在Intellij IDEA中,有一种叫做类型迁移的工具,正如我所记得的,正是在这种情况下,您还可以进行“穷人的重构”:更改接口,然后等待IDE标记所有现在已损坏的实现。这也要求实施项目是开放的。我们以前做过这样的工作,我们需要实际查看(和检查)接口的所有实现。您能提供此解决方案的示例代码吗?我不认为使用抽象工厂或桥接模式是一个好主意,他们会为这个简单的解决方案增加开销,不是吗?这是正确的,但代码可能很大,您可能无法一次更改所有的实现