Django の Strategy Pattern 実装方法について
実は以下2つの検討が、ほぼ等価であることに気づいた。
① マルチテーブル継承を使うべきか。
マルチテーブル継承(ManyToOne, Foreign フィールド)
Model A a1 <-> Strategy Model B b
Model A a2 <-> Strategy Model B b
Model A a3 <-> Strategy Model C c
② OneToOne でのマルチテーブル継承
欠点: strategy の交換が困難(実装のされ方は?実は交換は容易なのか。)
③ OneToOne フィールドを使うべきか、Foreign フィールドを使うべきか。
④ プロキシモデルに置き換えられる。
Strategy 側の属性は全て親側のモデルに持ってくる必要がある。
⑤ 継承せずに行うか。