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 側の属性は全て親側のモデルに持ってくる必要がある。

⑤ 継承せずに行うか。