2009-03-31 15 views
1

Ich habe eine Situation, die Vererbung der Klassentabelle verwendet, wo das Basisobjekt (das abstrakt ist) durch bestimmte Typen des Objekts erweitert wird.Wie wird 'Vererbung' manchmal gehandhabt?

Zum Beispiel Person -> Benutzer -> Prospect

jedoch in einigen Fällen wie bei Prospect, manchmal reicht es für Benutzer und manchmal nicht. Ich kann die Beziehung nicht umkehren, weil Benutzer! == Prospect, also frage ich mich, wie man diese Art von Szenarien am besten behandelt, wo ein Objekt manchmal erweitert wird und manchmal nicht.

Ich weiß auch, dass jemand Komposition in diesem Fall über die Vererbung vorschlagen wird, aber das ist wirklich nicht machbar, weil ich auf die Möglichkeit zu erweitern Elternfunktionalität und Mitglied Eigenschaften sind so befüllt, dass alle Eigenschaften genau zugegriffen werden gleiches Verhalten.

Antwort

1

Die Vererbung in einer Datenbank bedeutet normalerweise, dass der primary_key der untergeordneten Tabelle ein foreign_key zum primären_key der übergeordneten Tabelle ist.
Aber Sie erwähnen, dass das Kind eine Waise sein könnte. In diesem Fall ist das Elternelement eine optionale Beziehung. (In der Regel durch Komposition gelöst)

Sie könnten zwei Klassen erstellen, einen erweiterten Benutzer und einen, der dies nicht tut.

(Aber dies kann nicht sinnvoll sein, was Sie versuchen zu tun)

+0

In diesem Fall hat jedes Kind eine person_id geerbt von der Basistabelle, aber ein Interessent kann entweder von einem Benutzer oder nur von einer Person erben. –

+0

Ah, ich sehe, wohin du gehst. Wenn ein Propekt einen Benutzer hat, sollte er die zusätzlichen Eigenschaften und Methoden von Benutzer erhalten. Hmmmm, tricky ... –

3

Ich rieche Decorator Pattern.

+0

Große Website verknüpft. Bonus, um sprachspezifisch zu sein. –

Verwandte Themen