問題2.76

  • 汎用演算
    • 新しい型を追加するとき
      • すべての汎用選択子の定義を変更する必要あり
      • 名前などがかぶらないように注意しないといけない。
    • 新しい演算を追加するとき
      • ふつうに新しく書くだけ。
  • データ主導
    • 新しい型を追加するとき
      • 内部手続きとして名前を気にせず記述し、インターフェースのみ用意すれば良いので楽。
      • 型の追加に伴い、インターフェースを変更する必要があれば、すべてのインターフェース部分を書き換える必要あり。
    • 新しい演算を追加するとき
      • すべてのインターフェースがそろっていないといけないので、全部の型のインターフェース部分を書き換える必要あり。
  • メッセージパッシング
    • 新しい型を追加するとき
      • 外部にテーブルを持たないので、新しいオブジェクト生成関数を追加するだけなので楽。
      • 型の追加に伴い、インターフェースを変更する必要があれば、必要によって書き換える。
    • 新しい演算を追加するとき
      • インターフェースという概念は必須ではない(つまりそれぞれの型が独立した演算名を持っていてよい)ので、任意に必要な型に演算を追加する。
  • 絶えず演算が追加される場合
    • 汎用演算
  • 絶えず型が追加される場合、
    • 堅くて大きくても、安定したインターフェースが必要であれば、データ主導
    • 少々適当でも、小さく開発速度重視なら、メッセージパッシング

とかかな

今日はここまで。