【发布时间】:2013-02-28 22:01:00
【问题描述】:
抱歉标题含糊;想不出如何更清楚地表达它。以下是问题的重点:
亮点
- 询问有关 ExifTool for Java 库的 API 设计问题。
- 这是an example 当前 API 的样子。
- 作为 USER,API 使用起来非常简单,因为您只需传入 Enums 即可获取您想要返回的图像元数据。
- 作为一个 DEV,API 有点糟糕,因为您无法轻松地使用更多 Enum 类型扩展基类以支持可能不直接在 lib 中支持的其他元数据。
- 简单地预定义和支持“所有元数据”是non-trivial。
问题
鉴于这些设置信息,我想要找到一种方法来预定义人们通常希望从图像中获得的 30 或 40 个最常见的元数据标志;现在一切都是defined as an Enum,但是这个类不能以这种方式扩展。
如果我采用“Class-per-Metadata-flag”路线,可扩展性会很简单,但开箱即用的 API 会不太友好。
如果闭包提供了一个非常漂亮和简单的解决方案,我将考虑将此库的 v2.0 制作为 Java 8+,但否则我显然更愿意让它与更多系统(Java 6/7)兼容而不是更少。
总结
我对该库的目标是“易于使用和扩展” - 我觉得我已经在 1.x 版本中确定了“易于使用”的方面,但该库不容易扩展,我想更正在 2.x 系列中。
我已经在 2.x 版本上等待了一年多的时间来等待灵感来袭,但它却让我望而却步;我希望有人能发现我的错误,我可以以一种非常优雅的方式向前推进 lib。
谢谢你们的时间!
【问题讨论】:
-
如果您想要最简单、最简单、最灵活/最强大的扩展,property bag 是您的最佳选择。
-
@MattBall 我对这个词不是很熟悉。查看该链接的“属性”部分,您的意思是像传递一个包含所有表示请求者想要的元数据的键的映射,然后库为所有这些键填充相关的值并返回相同的映射吗? (不错的主意...非常简单灵活)
标签: java api frameworks exif