Мы собираемся создать новый сайт. Сайт достаточно ориентирован на пользователя. Мы показываем пользователей вместе с различной информацией.
Теперь мы собираемся решить, как смоделировать это, и мы думаем о некоторых вариантах.
Сначала я хочу описать некоторые распространенные сценарии.
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;
}
Плюсы: не зависит ни от чего, а нужно только заполнить необходимой информацией
Минусы: более медленная разработка, и если вам нужно одно новое свойство (например, возраст пользователя) для всех страниц, потребуется много изменений.
Предложения