Я делаю все возможное, чтобы выучить DDD, но я не уверен в некоторых действительно базовых концепциях;Где расположены ваши доменные объекты и сервисы, и как организован общий макет?У меня есть привычка, хорошая или плохая, я не знаю, вот почему я спрашиваю;создать «программный» класс, который содержит доменные коллекции, доменные объекты и сервисные объекты.Как пример ниже.
Это хороший или плохой подход?И если плохо, каковы альтернативы?Пока что я просто работаю с проектами winforms, поэтому это моя главная забота в настоящее время.
Кроме того, не могли бы вы немного оценить мое использование "статических" объектов здесь?Я часто не уверен, стоит ли использовать static, и склоняюсь просто включить его, если я знаю, что это одноэлементный объект (если это правильный термин).
РЕДАКТИРОВАТЬ: Чтобы объяснить немного больше, я использую метод New класса "Program" для координации различных объектов домена и запуска начальной загрузкииз базы данных и т. д. при запуске программы.Так что, если вы предлагаете мне избавиться от этого класса, то стоит ли мне предлагать какие-то другие сервисы вместо запуска программы?
Пример:
class Form1
{
private MainClass main;
}
class MainClass
{
public static UserService UserServ;
public static UserAccountService UserAccServ;
public static List<UserAccount> UserAccounts;
}
class UserService
{
}
class UserAccountService
{
}
class UserAccount
{
public UserData User;
}
class UserData
{
}
РЕДАКТИРОВАТЬ: Ответ Дэвиду:
Спасибо!Чтобы ответить на ваши вопросы:
1) Мой пример был просто грубым шрифтом, я использую отдельные файлы для каждого класса, и мой проект на самом деле уже содержит 10 000 строк кода, хотя это может звучать не так.
2) Разобрались с советами по интерфейсам.
3) Разобрался с ассемблерами.
4) Я использую репозитории (и FluentNHibernate), я планирую, чтобы службы зависели от них, да.На данный момент у меня есть классы xxxManager, которые, как я знаю, плохи, и я буду работать над их заменой на xxxServices.
5) Я понимаю, что DI очень популярен, и хорошо, что вы сделали это, так что я знаю, что это ключевое решение для моего вопроса.Я буду учиться этому.Итак, насколько я понимаю, вы предлагаете мне внедрить сервисы непосредственно в класс формы?Но как насчет доменных объектов?Где они живут"?Должны ли они все жить в каком-то типе услуг?Если это так, какой тип служб вы создаете для работы с логикой запуска программы?Я понимаю основные концепции служб для сохранения данных, использования репозиториев и т. Д., Но, вероятно, есть другой тип общих классов служб, о которых я не знаю, связанных с моим вопросом?
PS: Iне должен был (по ошибке) назвать мой класс "Программой", так как это уже класс в проектах C #.Я использую как C #, так и VB, поэтому на самом деле в C # я обычно называю это MainClass.Поэтому я отредактировал это.