JGoodies Binding にある ValueModel は、とてもシンプルで強力な概念として僕のコードをかなり改善してくれている。だけど、ValueModel 内部で使っているイベントリスナを解放したいとか、制約付きプロパティを使いたいとかっていう話が出てきて、ValueModel の枠内では説明がつかなくなってしまっているのが残念。JGoodies Binding 1.1 では、ValueModelの一実装である PropertyAdapter のみが setVetoableValue(Object)とか、release()とかっていうメソッドを持っている。他の ValueModel とは違った扱いになるから、ラップとかするのに制限が出てしまう。
こういう場合、このままPropertyAdapter を特殊ケースとして扱うのが良いのか、ValueModel そのものを拡張して「制約付き」や「解放」といった機能を持たせてしまうのが良いのか。むずかしいところだな。
心情的には、ValueModel は超シンプルなままであったほしいけどね。