2009-03-31 10 views
1

基本オブジェクト(抽象クラ​​ス)がオブジェクトの特定の型によって拡張されているクラステーブルの継承を利用する状況があります。'時には'継承を処理する方法は?

例えば、人 - >ユーザ - >プロスペクト

はしかし、プロスペクトとのようないくつかの事例では、時にはそれがユーザーを拡張し、時にはそれはしていません。 User!== Prospectという関係を逆転することはできないので、オブジェクトが時には拡張したり、時にはそうでないようなシナリオをどのように最善に処理するのかと思っています。

また、私は誰かがこのケースで継承を超えて構成を提案することを知っていますが、親機能を拡張する能力に依存しているため実際には実現できません。同じ方法。

答えて

1

データベースの継承は、通常、子テーブルのprimary_keyが親テーブルのprimary_keyのforeign_keyであることを意味します。
しかし、あなたは子供が孤児かもしれないと言います。この場合、親はオプションの関係です。 (通常は合成によって解決されます)

2つのクラスを作成できますが、1つはユーザー拡張で、もう1つは作成しません。

(しかし、これは何をしようとするために適切でないかもしれません)

+0

この場合、すべての子には基本表から継承されたperson_idがありますが、見込み客はユーザーまたは個人から継承できます。 –

+0

ああ、どこに行くのか分かります。 Propectにユーザーがいる場合、追加のプロパティとメソッドをUserから取得する必要があります。うーん、難しい... –

3

I香りはDecorator Patternです。

+0

グレートサイトがリンクされています。言語特有のボーナス。 –

関連する問題