如何在抽象类中处理这个旧方法?

时间:2017-08-04 06:30:27

标签: java inheritance polymorphism

我有一个抽象类 AbstractLogic ,其中包含带有默认实现的 methodA()

抽象类的两个实现。

1.Sub1Logic:使用抽象类
中的methodA()    2.Sub2Logic:用不同的行为覆盖methodA()。

现在,methodA()的两个类的行为都是相同的。

所以我在抽象类中移动Sub2Logic类方法methodA()。

我有以下设计级问题:

  1. 我应该从Sub2Logic中删除此方法吗?或者我有任何注释使它无用吗?
  2. 我应该从抽象类中删除旧的实现吗?或者我有任何注释使它无用吗?
  3. 这个问题是因为,这是一个大而古老的应用程序,我不想删除多年来一直存在的东西。

1 个答案:

答案 0 :(得分:1)

  

我应该从Sub2Logic中删除此方法吗?或者我有任何注释使其无用?

在将方法移动到抽象类之后,应该完全从Sub2Logic中删除该方法。否则你有重复的代码,两个放置可能会有所不同。我的意思是,如果有人需要修改代码,可以轻易忘记其他地方。

  

我应该从抽象类中删除旧的实现吗?或者我有任何注释使其无用?

如果类Sub1LogicSub2Logic不再有任何差异,则应删除两者并将摘要转换为普通类。

  

我有任何注释使它无用吗?

不应再使用的方法应使用@Deprecated进行注释,并添加@deprecated javadoc解释

  • 该方法被弃用的原因
  • 如果仍在使用,可能会出现什么问题
  • 应该首选哪种方法。

E.g。

/** 
 * @deprecated This method might cause inconsistency when used simultaneously
 * by multiple threads
 * and is replaced by  {@link #threadsafeMethod(int, int) threadsafeMethod}. 
 * It will be removed in later releases.
 */