Как вы настраиваете модель вашего домена? - PullRequest
1 голос
/ 17 января 2011

Мы собираемся создать новый сайт. Сайт достаточно ориентирован на пользователя. Мы показываем пользователей вместе с различной информацией.

Теперь мы собираемся решить, как смоделировать это, и мы думаем о некоторых вариантах.

Сначала я хочу описать некоторые распространенные сценарии. 1) Иногда мы хотим показать имя пользователя, город и картинку для текущего пользователя 2) Иногда мы хотим показать всю пользовательскую информацию 3) Иногда мы хотим показать только имя пользователя 4) Иногда мы хотим показать имя пользователя и город

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

Это можно решить разными способами, и я хотел бы услышать от вас, что вы считаете лучшим способом.

Я беру некоторые решения с плюсами / минусами.

Во-первых, несколько классов. Создайте базовый класс от пользователя, который имеет все общие свойства. А затем распространяться оттуда. Например.


public class BaseUser
{
    public string username;
}

public class User : BaseUser
{
    public string city;
}

public class UserWithPicture : User
{
    public string picture;
}

public class CompleteUser : UserWithPicture
{
    public string SomeProperty;
}

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

Другим решением может быть всегда иметь все в одном классе и использовать это все время. <pre> public class User { public string username; public string city; public string picture; public string SomeProperty; }

Плюсы: у вас всегда есть вся информация о пользователе Минусы: где вы проводите черту? Можем ли мы разместить здесь OrderLines и UserContacts? Все зависит от этого одного класса, что затрудняет поддержание, если вам нужно что-то изменить.

Другим решением было бы создание уникального контекста почти для каждой страницы

<pre> public class ForumPost { public string data; public string topic; public string username; public string usercity; public string userpicture; }</p> <p>public class SearchPost { public string searchdata; public string username; public string usercity; }

Плюсы: не зависит ни от чего, а нужно только заполнить необходимой информацией Минусы: более медленная разработка, и если вам нужно одно новое свойство (например, возраст пользователя) для всех страниц, потребуется много изменений.

Предложения

Ответы [ 2 ]

2 голосов
/ 18 января 2011

Все упомянутые вами сценарии имеют очень мало общего с моделью домена:

1) Иногда мы хотим показать имя пользователя, город и изображение для текущий пользователь 2) Иногда мы хотим показать всю информацию пользователя 3) Иногда мы хотим показать только имя пользователя 4) Иногда мы хотим показать имя пользователя и город

То, что вы хотите показать , имеет значение только на уровне представления. При проектировании модели данных забудьте о том, что вы хотите показать , и подумайте, как лучше всего представить свои бизнес-объекты.

0 голосов
/ 18 января 2011

Я бы выбрал ваш средний вариант - один класс со всеми атрибутами.

Первый подход через наследование выглядит как кошмар для обслуживания / использования.

Последний подход также выглядит плохо -много дублирования.

Что касается OrderLines и UserContacts, я бы выделил их в свой класс - один ко многим из класса User.

~ chris

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...