java - 在对象上添加/删除功能的范例
问题描述
让我们假设我正在为一个事件编写一个处理程序。
活动一旦创建,就可以预订或取消。
所以我可以创建一个类似这样的界面
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 范式可以以体面的方式解决这个问题?最好的方式也提供智能感知
解决方案
推荐阅读
- django - 如何使用 Graphql 查询不同的值?
- r - 根据 R 中的不同数据框将所有昵称替换为全名
- javascript - 使用 .map 和 store 创建过滤器
- mysql - 如何在通过使用现有数据库提交 mysql5.7 容器创建的 docker 容器中运行初始化脚本?
- puppet - 如何将一些字符串附加到木偶文件中的现有行(不是文件末尾)?
- python - 无法安装 pychalk:“FileNotFoundError:[Errno 2] 没有这样的文件或目录:'..\\MarkupSafe-1.1.1.dist-info\\METADATA”'
- amazon-kinesis - 改变动能碎片
- snowflake-cloud-data-platform - 如何将 .jsonl 加载到雪花表变体中?
- typescript - 使用 TypeScript 运行 Quill 编辑器
- javascript - 使用 .not 正确 JQuery