java - 我们如何使用 Java 接口(interface)强制执行双向接口(interface)?

标签 java interface private observer-pattern

Java 不允许私有(private)或 protected 方法,那么我们如何确保双向接口(interface)的实现者调用必要的方法?

假设我们有一个 IModelListener 接口(interface),如下所示:

public interface IModelListener
{   
    public void handleChannelUpdate(int channel);
}

然后我们就有了一个 ViewControl 客户端,如下所示:

public class ViewControl implements IModelListener

只要我们记得让 ViewControl 调用此方法,ViewControl 对象就会起作用:

model.registerChannelListener(this);

如果 Java 允许接口(interface)中的 protected 或私有(private)方法,我们可以简单地将 IModelListener 修改为:

public interface IModelListener
{   
    public void handleChannelUpdate(int channel);
    private void registerChannelListener( );
}

如何实现这一目标? 是否有注释可以做到这一点?

Java 不支持多重继承,因此如果客户端/实现者已经是派生类(典型),则不能选择使用抽象类。

感谢您的帮助, 杰夫

最佳答案

您可能错过了接口(interface)的概念。它不能包含私有(private)或 protected 方法,因为接口(interface)的作用是提供可访问的方法集。另一方面,您可能可能会看看抽象类。

您需要的可能是这样的:

public abstract class AbstractViewControler implements IModelListener {

    protected abstract void registerChannelListener();

    protected AbstractViewControler() {
        this.registerChannelListener();
    }
}

然后:

public class MyViewControler extends AbstractViewControler {

    protected void registerChanelListener() {
        //- Do what you need here.
    }
}

然后就是:

IModelListener listner = new MyViewControler();

关于java - 我们如何使用 Java 接口(interface)强制执行双向接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22069400/

相关文章:

c++ - 私有(private)变量只需要在构造函数中初始化。如何?

JavaScript 对象私有(private)参数

java - Eclipse - 如何在整个项目中出现 "Change package declaration to ...."

java - 如何在jsp中保留变量onchange?

java - 创建文件,java中的异常情况

java - 使用抽象类和接口(interface)

java - 为什么我会收到有关compareTo 方法的错误?

java - 模拟一个使用另一个类的 static void 方法的类

java - 动态加载遵循接口(interface)的类

go - 在 Go 中通过 Godoc 记录私有(private)结构上的公共(public)方法