接口的默认实现?或保留为空

时间:2016-12-15 16:13:24

标签: java interface implementation

所以问题不是很容易理解,但我会尽我所能,让我说我有一个界面:

interface OnWindowMoveListener{
    void onWindowMove(MotionEvent motionEvent);
}

现在我上课了

OnWindowMoveListener onWindowMoveListener;

public void setOnWindowMoveListener(OnWindowMoveListener onWindowMoveListener){
    this.onWindowMoveListener = onWindowMoveListener;
}

稍后在我的代码中调用onWindowMoveListener.onWindowMove(),但我不想检查用户是否设置了onWindowMoveListener,因此不是null,我将如何为此侦听器创建默认实现?我是否必须在我的类的main方法中手动实现接口,以防用户自己没有实现它们或者有其他方法吗?我一直在检查接口是否已在调用之前实现,但想知道是否有更简洁的方法来执行此操作。谢谢

1 个答案:

答案 0 :(得分:0)

执行nullcheck不是一个成本操作,但如果你真的需要避免它,你最好的选择是使用Null对象设计模式。

创建一个不执行任何操作的接口实现,而不是将其用作onWindownMoveListener的默认值。

有关此设计模式的详细信息,请参阅:https://sourcemaking.com/design_patterns/null_object/java-0