曖昧なタイトルに申し訳ありません。それをより明確に語る方法を考えることができませんでした。ここでの質問のハイライトは以下のとおりです。簡単に拡張可能なAPIをEnumの簡単な方法で設計するにはどうすればいいですか?
ハイライト
- ExifTool for JavaライブラリのAPIの設計質問をします。
- 現在のAPIの外観はan exampleです。
- USERとして、返すイメージメタデータにEnumsを渡すだけなので、APIは使いやすいです。
- DEVとして、libで直接サポートされていない可能性のある追加のメタデータをサポートするために、より多くのEnum型で基本クラスを簡単に拡張することができないため、APIは多少厄介です。
- 「すべてのメタデータ」の定義とサポートは、単にnon-trivialです。
質問
考えるとその設定情報、私は後に、人々は、典型的には、その画像から必要な30のまたは40の最も一般的なメタデータフラグを事前に定義する方法を見つけようとしているのです何。今のところすべてがdefined as an Enumですが、クラスはこのように拡張できません。
"Metadata-Class-Per-Per-Flags"ルートを使用すると、拡張性は簡単になりますが、APIの使用がずっと使いやすくなります。
私はこのライブラリのJava2.0を作成することを検討します。もしクロージャが本当に美しくてシンプルなソリューションを提供していれば、それ以上のシステム(Java 6/7)私は1.xのリリースで側面「を使用する単純な」釘付けしていると感じますが、ライブラリーは、容易ではありません - ライブラリの
概要
私の目標は、「使用して、拡張するシンプル」です拡張可能で、私は2.xシリーズでそれを修正したいと思います。
私はストライキのインスピレーションを待っている1年以上にわたって2.xリリースに座っていて、それは私を逃しました。私は誰かが私の間違いを見つけられることを望んでおり、私は本当にエレガントな方法で前進させることができます。
ありがとうございました!
あなたが最も簡単で、最も簡単で、最も柔軟で強力な拡張を望むなら、[property bag](http://steve-yegge.blogspot.com/2008/10/universal-design-pattern.html)は方法です行く。 –
@MattBall私はその言葉に精通しているわけではありません。そのリンクのPropertyセクションを見ると、リクエスタが望むメタデータを表すすべてのキーを持つMapを渡すだけで、それらのすべてのキーに関連付けられたValuesにライブラリが埋め込まれ、同じMapが返されるようなことを意味しますか? (悪い考えではありません...非常にシンプルでフレキシブルです) –