不変のものと変わるもの

 データには不変の実態がある。データに対して違う解釈をしても意味のある結果には出来る。

 ある解釈に対して違うデータを与えても意味のある結果は出せる。しかしデータのインターフェースが異なれば解釈できなくなる。

 決して変わらないのはデータのインターフェースだ。C#だとプロパティだけのクラス。メソッドはデータの解釈なので変えられる。変える物は別のコンポーネントにする。不変のコンポーネントではインターフェースは作れるがメソッドの実装は出来ない。プロパティは実装できる。

 不変のコンポーネントではメソッドを静的に定義できないのでデリゲートにして外部のコンポーネントからラムダ式を突っ込む形になるだろう。インターフェースはいらない。C#3.0ではほとんどのケースでインターフェースはいらなくなった。