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



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

我所说的骨架是指一个类,它提供了一个骨架实用程序代码,但需要一个子类来实现其中的一些部分。

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

基本上,模式应该是这样的:

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++中的虚拟方法。

您需要用抽象方法声明一个抽象类Skel,并在子类中实现它们:

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() {
        //..
    }
}

使用抽象类,甚至更好地提取公共接口,以便类被它引用

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() {
        //..
    }
}

相关内容

  • 没有找到相关文章

最新更新