對不起,模糊的標題;想不起如何更清楚地說出來。下面是提問的亮點:如何使用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