Дизайн домена - ссылка на сущность в подклассе - PullRequest
0 голосов
/ 05 февраля 2009

Допустим, у меня есть сущность Foo, и она содержит список другой сущности Bar. Должен ли Бар иметь прямую ссылку на Foo? то есть ...

public class Foo
{
   public int Id {get; set;}
   public IList<Bar> Bars {get; set;}
}

public class Bar
{
   public int Id {get; set;}
   public Foo parentFoo {get; set;  //this will be set to an the Foo entity on creation
}

или я просто пропущу ссылку на Foo в моем классе Bar?

Я склоняюсь к тому, чтобы опустить эту ссылку, но мне было интересно, какой здесь правильный подход?

Ответы [ 4 ]

3 голосов
/ 05 февраля 2009

Правильный подход заключается в том, чтобы задать вопрос: «Нужно ли Бару ссылаться на Foo по какой-то причине?» Не просто помещайте ссылку туда, если Бар не нуждается с этим.

2 голосов
/ 05 февраля 2009

Это действительно зависит от примера. Если существует , необходимо , чтобы узнать родителя (например, для выполнения двунаправленной навигации - например, XmlNode и т. Д.), Тогда вам это потребуется. Это действительно работает только для одного родителя.

Если вам просто нужны уведомления об изменениях, то события могут быть более универсальными - в частности, события позволяют нескольким «родителям» без ущерба.

Если ребенку не нужно заботиться о родителе, не беспокойтесь.

1 голос
/ 05 февраля 2009

Я отвечу на вопросы, в которых говорится «делай это, если тебе это нужно», но хочу предупредить, что соединение в обоих направлениях может привести к хрупкому коду. Тщательно продумайте, является ли ссылка с Bar на Foo абсолютно необходимой. Если этого вообще можно избежать, то следует.

1 голос
/ 05 февраля 2009

Не указывайте, если объект Bar не должен точно знать, к какому Foo он принадлежит.

И если вы решите, что это необходимо, подумайте, как бы вы справились с Bar объектом, который принадлежит более чем одному Foo (вполне возможно с описанной вами структурой класса).

...