🖇

アナリシスパターン:オブジェクトへの参照

2020/09/22に公開

概要

アナリシスパターン[1]第5章のオブジェクトへの参照について、ベン図をざーっと書き下してみた。

識別体系

  • 複雑なシステムでは1つのオブジェクトに複数の識別子がつく

image

オブジェクトの併合

  • 同一だと識別されるべきオブジェクトが複数作成されてしまうことがある
    • 病院に患者が来て治療を受けた
    • 数日後、別の部局の外来患者でもあることが判明した
    • 病院のシステムには、その患者の別の記録が作成されてしまった
  • 概念的に2つのオブジェクトを結びつける仕掛けが必要
  • 方針
    • 複写置換
    • 乗っ取り
    • 本質/外見

複写置換

  • あるオブジェクトのすべての属性をもう一方のオブジェクトに複写し、元のオブジェクトを削除する方法
  • 削除したオブジェクトへの識別子を残った方のオブジェクトへ対応付ける
    • 不変性ルールが破られる
    • 別名識別子(識別子に対しUNIQUEをかけない)が許されればOK
  • 削除されたオブジェクトへの参照すべてを把握しなければならないので危険
  • ベン図で書けない(概念化できてない)ので、あまりやらないほうがよさそう

image

乗っ取り(supersede)

  • 一方のオブジェクトを乗っ取られたオブジェクトとして型づけする
    • 現行オブジェクトへリンク
    • すべての作業は現行オブジェクトが行う
    • 乗っ取られたオブジェクトは履歴のためだけに残る
  • 乗っ取られたオブジェクトのデータは現行オブジェクトへ複写、もしくは作業時に常にチェックされる

image

本質/外見

  • オブジェクトを互いにリンクするためだけの別のオブジェクトをおく
  • オブジェクトを再分割する可能性がある場合に適している

image

オブジェクトの等価性

  • オブジェクトの等価性は視点によって異なることがある
    • 多くの意思はG型肝炎とGBC型肝炎を同じ病気と考えるが普遍的ではない
    • 医師がG型肝炎の患者リストを要求するとき、その医師が等価性に合意していればGBC型肝炎の患者も答えとして返す

image

脚注
  1. Martin Fowler (2002) アナリシスパターン: 再利用可能なオブジェクトモデル, ピアソンエデュケーション ↩︎

Discussion