首页 > 解决方案 > 在对象上添加/删除功能的范例

问题描述

让我们假设我正在为一个事件编写一个处理程序。

活动一旦创建,就可以预订或取消。

所以我可以创建一个类似这样的界面

void book();
void cancel();

如果我们进一步扩展它,我们可以添加取消预订和取消取消的方法

void book();
void unbook();
void cancel();
void uncancel();

现在的问题是我可以调用uncancel()一个尚未取消的事件。

当然我可以让它抛出一个IllegalStateException但我想知道是否有可能在编译时而不是运行时出错。

我必须解决的一个想法是使用更多接口,有点像这样

Unbookable book();
Uncancellable cancel();

但是当你认为你希望能够做这样的事情时,这个问题就变得很清楚了

book().cancel().uncancel().unbook()

因为这些cancel/uncancel方法不知道它们是返回一个基数Event还是一个Unbookable事件

那么是否有任何明确的 Java 范式可以以体面的方式解决这个问题?最好的方式也提供智能感知

标签: java

解决方案


推荐阅读