【问题标题】:why we implement interface to abstract class为什么我们要实现抽象类的接口
【发布时间】:2013-02-15 21:28:15
【问题描述】:

请找到链接以供参考:"Strategy for success" article of JavaWorld

我的问题是,当我们可以在抽象类本身中声明这些抽象方法时,为什么我们需要有单独的接口并在抽象类中实现它?

图片中的前,

public interface Border(){
      paintBorder();
      getBorderInsets();
      isBorderOpaque();
 }


public class abstract AbstractBorder implements Border(){
 .....
}

相反,我们可以使用抽象类

public class abstract AbstractBorder {
      paintBorder();
      getBorderInsets();
      isBorderOpaque();
 }

为什么我们使用接口?什么是必要性?

【问题讨论】:

标签: design-patterns interface strategy-pattern


【解决方案1】:

也许接口定义了可能存在于其他抽象类中的行为,除了你提到的那个。 IDisposable 接口就是一个很好的例子。

如果您决定在抽象类本身中声明这些方法,那么当您从这个抽象类实现一个具体类时,您最终可能不得不处理很多混乱。此外,由于您可以在抽象类中指定行为,因此该行为可能会被实现类重用。

【讨论】:

    【解决方案2】:

    这也是我在开始使用 Java 时也想过的事情。可以在here 找到非常详细的答案。如果您需要任何进一步的说明,请发表评论。

    【讨论】:

      【解决方案3】:

      对接口而不是类进行编程是一种很好的实践。在策略模式中,想法是拥有“策略”接口,并且在运行时您可以更改策略(实现接口的类)而无需更改大部分其余代码。

      这是 SOLIDprinciples 的良好开端,让您的代码更加灵活和强大。

      我有一个exemple of the Strategy Pattern in my github,并且在对象“Cavaleiro”(英语中的骑士)中在运行时发生了更改。

      为此,我创建了一个接口并使用它,而不是一个类的对象,通过它我可以轻松更改“策略”。

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 2014-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        • 2012-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多