在自己的接口中初始化类

我查看了一些代码并注意到这样的结构:


public interface TestIntrerface {

  void doFirst();

  void doSecond();

}


public interface Interface1 extends TestIntrerface {

  Interface1 inter = new FirstClass();

}


public interface Interface2 extends TestIntrerface {

  Interface2 intr = new SecondClass();

}



public class FirstClass implements Interface1 {

  public void doFirst() {

    //...

  }


   public void doSecond() {

      //...

   }

}


public class SecondClass implements Interface2 {

   public void doFirst() {

      //...

   }


  public void doSecond() {

      //...

  }

}



public class Test {

  public static void main(String[] args) {

    Interface1.inter.doFirst();

    Interface2.intr.doSecond();

  }

}

它对我来说有潜力,但我以前从未见过这种结构。两个问题:

  1. 这个模式的名称是什么(是那个模式(?))?

  2. 在现实世界中使用它是一个很好的做法吗?


互换的青春
浏览 73回答 1
1回答

回首忆惘然

这是两个常量声明 inter和intr接口的示例。这不是一种模式,我不会说这是一个好的做法。Interface1并且Interface2毫无意义:它们不补充/实现它们扩展的接口。基本上,它们是可以在其他地方定义的常量的持有者。请注意,常量绑定到特定的类,而接口具有更广泛的含义,提供通用接口。名称inter和intr很糟糕,它们没有告诉我们这些常量代表什么/做什么。一个更合理的例子看起来像interface TestInterface {  void doFirst();  void doSecond();  TestInterface EMPTY = new TestInterface() {    @Override    public void doFirst() {}    @Override    public void doSecond() {}  };}whereEMPTY表明它是接口的默认(且空)实现。请注意,我将其称为EMPTY(而不是empty),因为它始终是一个public static final字段。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java