Как обращаться с «иногда» наследованием? - PullRequest
1 голос
/ 31 марта 2009

У меня есть ситуация, использующая наследование таблиц классов, когда базовый объект (который является абстрактным) расширяется определенными типами объекта.

Например, Персона -> Пользователь -> Перспектива

Однако, в некоторых случаях, например, в Prospect, иногда он расширяет пользователя, а иногда нет. Я не могу изменить отношения, потому что Пользователь! == Перспектива, поэтому мне интересно, как лучше всего справиться с такими сценариями, когда объект иногда расширяется, а иногда нет.

Кроме того, я знаю, что в этом случае кто-то предложит композицию вместо наследования, но это действительно неосуществимо, поскольку я полагаюсь на возможность расширять родительскую функциональность, а свойства элемента заполняются так, чтобы все свойства были доступны точно так же манера.

Ответы [ 3 ]

3 голосов
/ 31 марта 2009

я чувствую запах Выкройка декоратора .

1 голос
/ 31 марта 2009

Наследование в базе данных обычно означает, что primary_key дочерней таблицы является Foreign_key для родительской таблицы primary_key.
Но вы упоминаете, что ребенок может быть сиротой. В этом случае родитель является необязательным отношением. (Обычно решается по составу)

Вы можете создать два класса, один расширяющий пользователя, а другой - нет.

(но это может не подходить для того, что вы пытаетесь сделать)

0 голосов
/ 31 марта 2009

Следуя шаблону Decorator будет вашим лучшим выбором. Не уверен, какой язык вы используете, но вот еще одна ссылка для реализации .NET.

http://www.dofactory.com/Patterns/PatternDecorator.aspx

...