【问题标题】:Should Java interface only contain getters?Java接口应该只包含getter吗?
【发布时间】:2016-05-25 16:17:09
【问题描述】:

我有一些关于接口使用的一般性问题:

  1. 为每个对象类创建接口有什么好处?
  2. 接口应该只包含“getter”方法吗?
  3. 为什么不使用二传手呢?
  4. 为什么要为每个对象类创建一个接口?它会在 JUnit 测试中为我服务吗?

例如:

    public interface Animal {
      public getVoice();
      public String getName();
    }

public class Dog implements Animal {
   private String name;

   public getVoice(){
      System.out.println("Brrr");
   }
   public String getName(){
      return this.name;
   }
   public void setName(String name){
      this.name = name;
  }

}

谢谢

【问题讨论】:

  • 您在这里至少要问三个问题。您介意将其缩小到可以简洁回答的范围吗?
  • 单元测试测试具体的实现,他们确实需要测试一个类的“接口”(广义上)但不一定是interface:stackoverflow.com/questions/10937763/…

标签: java junit interface


【解决方案1】:

为每个对象类创建接口有什么好处?

完全没有优势。这不是接口的用途。

接口应该只包含“getter”方法吗?为什么不是 setter?

只要是方法,接口就不会关心它们的功能行为。

为什么要为每个对象类创建一个接口?

同样,这不是界面的目的。将其视为冗余

如果你了解什么是interfaces,你就会意识到它们的正确用法

实现一个接口可以让一个类对它承诺提供的行为更加正式。接口在类和外部世界之间形成一个契约,这个契约在编译器构建时强制执行。

【讨论】:

    【解决方案2】:

    接口用于描述合同。要么在应用程序内部使用,通过提供多个实现的抽象,或者将它们提供给外部实体以供它们实现。

    接口中可以有任意数量的方法,它们的目的是在实现类上强制执行它们,因此契约得以维持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-07
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多