Избегайте циклической ссылки в модели предметной области

Вы можете сделать это, используя data- атрибуты , хотя ( часть спецификации HTML5 ), например:

  • jQuery даже построил -в поддержке их в 1.4.3+, например:

    $("li").data("something") //"CommonLi"
    

    Для других ваших вопросов:

    • Они будут проверять , если это HTML5 - но не нарушит ничего в HTML4
    • Это не должно мешать дизайнеру, но это будет зависеть от , который дизайнер
    • Если вы выбираете из элемента, производительность такая же, как у любого другого атрибута

    7
    задан ng5000 2 June 2009 в 13:22
    поделиться

    4 ответа

    Нет ничего плохого в циклических ссылках как таковых, и они широко используются в .NET Framework, например XmlNode.OwnerDocument, Control.Parent.

    Если вам нужно пройти вверх по tree, тогда можно использовать обратную ссылку.

    В COM циклические ссылки сложны, потому что, если вы установили контейнер и все его дочерние элементы на ничто, тогда объекты не будут очищены должным образом, так как дочерние элементы все еще содержат ссылки к родителю. Однако сборка мусора .NET не имеет проблем с этим способом реализации.

    4
    ответ дан 7 December 2019 в 05:30
    поделиться

    Нужно ли контейнеру знать о типе содержимого? В противном случае универсальные шаблоны могут этого избежать - например, Контейнер , где вы случайно используете Контейнер . Помимо этого; вставка необходимых деталей в интерфейс (или базовый класс) в сборке, на которую могут ссылаться оба, является распространенным подходом.

    Лично я бы попытался просто избежать необходимости, чтобы ребенок знал о родителе.

    Также; обратите внимание, что если вы выполните , спуститесь по маршруту абстракции (интерфейса и т. д.); это может иметь большое значение, если вы используете (например) сериализацию xml.


    (отредактируйте комментарии) OK; first: what problem is the circular reference (within an assembly) causing; if none, leave it alone. If there is a problem, then you'll need an extra type; presumably some interfaces to represent the concrete types - i.e. where Entity : IEntity, and EntityContainer only knows about IEntity (or vv with IEntityContainer, or both),

    2
    ответ дан 7 December 2019 в 05:30
    поделиться

    Итак, я не вижу проблем с вашей моделью класса, но вы можете легко сделать чистый разрез. Заставьте Entity реализовать интерфейс IEntity и сделать так, чтобы EntityContainer содержал IList, и если у вас нет очень конкретной причины для использования IList, вы должны учитывать IEnumerable, это упростит для потребителя EntityClass, который вы используете. Поскольку передача любого массива IEntity или выражения linq возможна при выборе IEntities

    1
    ответ дан 7 December 2019 в 05:30
    поделиться

    В моей книге можно использовать объекты с круговыми ссылками, если вы используете какой-то шаблон отложенной загрузки при проектировании этих объектов.

    например.

    Вы хотите получить доступ: Company.Employee И в другом сценарии: Employee.Company

    Что делает циклическую ссылку, например Company.Employee.Company.Employee и т.п.

    Если эти свойства не загружаются лениво, например Объект Company всегда загружает свое свойство Employee, а объект Employee всегда загружает свое свойство Company, поэтому он не будет работать слишком хорошо, когда вы вводите источник данных.

    1
    ответ дан 7 December 2019 в 05:30
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: