繁体   English   中英

接口由数千个类实现,因此如果接口发生更改,那么如何减少它

[英]interface is implemented by thousands of classes so if changes occurs in interface then how to reduce it

有一个场景我有接口X,它已经用我的数千个类实现。 现在我想在Interface X中添加新方法。那么如何以最小的方式进行更改以解决所有类中方法被覆盖的问题

如果方法实现对所有类都是通用的,那么abstract class 可能比它的interface更好。

如果不是 - 那么无论如何你都会写这些方法。


(*)最初是评论,但我被要求作为答案。

  1. 如果您的新方法对该接口的所有实现都没有意义,请不要在那里添加它 - 创建一个扩展原始接口的新接口
  2. 如果所有千个类都应该有一个默认实现 - 将您的界面更改为抽象的clas

除了其他建议(使其abstractextend interface ),还有一个选择:

使接口的所有实现者扩展基类。 这样,当您向interface添加方法时,您只需要将默认行为添加到基类和特定于类的行为(希望)只是一些实现者。

如果你不介意在你的所有类中都没有这个方法的实现,并且可以控制所有的实现类,那么这是一个非常hacky的方法,可以通过3个步骤使用IntelliJ来完成,而无需访问每个类:

  1. 将您的方法添加到接口
  2. 选择一个方法并调用Refactor-> Push Down ... - 您的方法声明将出现在实现此接口的所有类中,但至少在我的IntelliJ IDEA(11.0.2)版本中,它们将没有实现,例如void doSomething(); ,因此选择此定义并执行完整项目查找和替换以将此字符串替换为您的默认实现,例如,

    @Override void doSomething(){}

  3. 再次将您的方法添加到界面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM