对不起,模糊的标题;想不起如何更清楚地说出来。下面是提问的亮点:如何使用Enums的简单性设计一个易于扩展的API?
亮点
- 询问有关ExifTool for Java库的API设计的问题。
- 这里是an example当前API的样子。
- 作为用户,该API使用起来非常简单,因为您只需传入想要返回的图像元数据的Enums即可。
- 作为DEV,API有点糟糕,因为您不能使用更多的Enum类型轻松扩展基类,以支持可能不直接在lib中支持的其他元数据。
- 简单地预先定义和支持“所有元数据”为non-trivial。
问题
鉴于设置信息,我所后,试图找到一种方式来预先定义,人们通常根据它们的图像所需的30个或40个最常见的元数据标记;现在一切都是defined as an Enum,但是这个类不能用这种方式扩展。
如果我选择“每元数据标志”路由,其可扩展性将会很简单,但API的开箱即用性会差很多。
我将考虑这个库的Java 8+的V2.0如果关闭提供一个非常美丽而简单的解决方案,但除此之外,我更喜欢明显,以保持其与多个系统兼容(Java的6/7)以内。
摘要
我对图书馆的目标是“简单易用,扩展” - 我觉得我已经钉在“简单易用”方面与1.x的版本,但该库是不容易可扩展的,我想在2.x系列中进行更正。
我一直坐在2.X版本了一年多的等待灵感罢工和它躲避我。我希望有人能够发现我的错误,并且我可以以一种非常优雅的方式向前移动lib。
谢谢你的时间家伙!
如果你想要最简单,最简单,最灵活/强大的扩展,[property bag](http://steve-yegge.blogspot.com/2008/10/universal-design-pattern.html)去。 – 2013-02-28 22:03:18
@MattBall我并不是那么熟悉这个词。看看这个链接的属性部分,你的意思是像传递一个包含所有请求者需要的元数据的Key的Map,然后该库为所有这些键填充相关值并返回相同的Map? (不是一个坏主意......非常简单和灵活) – 2013-02-28 22:12:31