EOKVCConcepts
2007/03/30 (Fri) 22:07:46 JST
?KeyValueCodingの概念
KVCは普段たった数個のメソッドしか使われない一見地味なインターフェースですが、中でも「キーパス」はEOFを支えている重要な概念です。
オブジェクトモデル
通常オブジェクトは他のオブジェクトを参照しており、オブジェクト間の関係はネットワーク構造になります。
図:オブジェクトモデル
このネットワークから特定のオブジェクトを探し出すには、オブジェクトの構造を1つ1つたどることになります。 オブジェクトが目的のメソッドを持っていれば話は簡単ですが、大抵はアクセサメソッドを通してオブジェクトを順々に調べ、たどりながら探します。
すると単純な構造をたどるにもメソッドをチェーンする分だけのコードを書く必要があります。 深い構造になるとそれだけチェーンも長くなり、構造をたどるだけのアクセサメソッドが増えることでしょう。
KVCはオブジェクトのネットワークに論理関係を表現する手段と探索のためのアクセスパス(キーパス)を与えます。 キーをつなげていくだけで簡単に目的のオブジェクトを取得することができるようになり、コードを考える手間が省けます。
例:Director, Talent, ?TalentPhotoオブジェクトをたどって写真データを取得する
director.talent().talentPhoto().photo() -> director.valueForKeyPath("talent.talentPhoto.photo")
※ちなみにオブジェクトを検索する手段を与えるのがEOQualifierです。
関係モデルからのマッピング
キーパスを利用し、関係モデルのデータ(リレーショナルデータベース)をオブジェクトのネットワークとして扱えるようにしたのがEOFです。 関係モデルではテーブルの結合を行うことでテーブルの関係をたどりますが、EOFではキーパスによってオブジェクトの関係をたどります。
Inverse Pages: WebObjects基礎研究室