实现骨架 class 的正确样式是什么?

What is the proper style for implementing a skeleton class?

在 Java 中实现骨架 class 的正确样式是什么?

我所说的骨架是指 class 提供骨架实用程序代码,但需要子class 来实现某些部分。

在 C++ 中,我只是将纯虚拟方法添加到 class 中,但是 Java 对接口和 classes 有严格的区分,所以这不是一个选项。

基本上pattern应该是这样的:

class Skel { 
  void body() {
    this.action1();
    this.action2();
  }
};

class UserImpl : extends A {
   void action1() {
      impl;
   }

   void action2() {
      impl;
   }
}

/* ... snip ... */

Skel inst = new UserImpl();

/* ... snip ... */

inst.body();

Java 中的抽象方法类似于 C++ 中的虚方法。

你需要声明一个带有抽象方法的抽象class Skel,并在子class:

中实现它们
public abstract class Skel {

    public void body() {
        this.action1();
        this.action2();
    }

    abstract void action1();
    abstract void action2();

}
abstract class Skel {abstract void action1();
    abstract void action1();
    abstract void action2();
    public void body() {
        action1();
        action2();
    }
}

class UserImpl extends Skel {
    @Override
    public void action1() {
        //...
    }
    @Override
    public void action2() {
        //..
    }
}

使用抽象 Class 或更好地提取通用接口,以便您 类 被它引用。

interface CommonInterface {
    void action1();
    void action2();
    void body(); 
}

abstract class Skel implements  CommonInterface{

    public void body() {
        action1();
        action2();
    }
}

class UserImpl extends Skel {

    @Override
    public void action1() {
        //...
    }

    @Override
    public void action2() {
        //..
    }
}