@PTPPAction · Post #1752 · 27.03.2024 г., 08:10
#dev#IITII#merged fix(mt): 批量下载, 详情页下载 #1762
TGINSIGHT SIMILAR POSTS
Изходен канал @clockstackwheels · Post #973 · 20.04
В C# есть модификатор доступа internal, который закрывает свойство или метод для всего, кроме текущей сборки (сборка это по сути группа пространств имён). И это чертовски удобно для построения правильной архитектуры по DDD — ты делаешь домен отдельной сборкой без внешних зависимостей, у сущностей закрываешь сеттеры и другие поля модификатором internal, а бизнес-правила с открытыми методами уже пишешь в агрегатах, которые содержат эти сущности. Агрегаты объявлены в той же сборке, так что они могут с сущностями делать что угодно, но слой приложения уже сможет вызвать только метод агрегата. Пример. Есть бизнес-процесс, который включает в себя две сущности: письмо и прикреплённый к нему документ. У каждой из этих сущностей разные жизненные циклы, но письмо можно отправить только в том случае, если статус документа "Согласован". Мы делаем агрегат "письмо с документом" и там public-метод отправки письма сначала проверяет статус документа, а потом вызывает internal-метод отправки в сущности письма. Снаружи (вне домена) вызвать сразу отправку письма невозможно. Но как эту задачу решают разработчики на других языках? Я совершенно не понимаю, как сделать хорошую архитектуру без internal. Окей, в некоторых языках вообще нет вменяемого ОПП и системы типов, но и к таким ребятам я бы не подходил с вопросами об энтерпрайз-архитектуре. Однако, многие серьёзные проекты пишутся на Java или, скажем, Go, что делают разработчики там? Может, кто-нибудь знает, и расскажет мне в комментариях? #dev
Hashtags
Общо глобално търсене
@PTPPAction · Post #1752 · 27.03.2024 г., 08:10
#dev#IITII#merged fix(mt): 批量下载, 详情页下载 #1762
@PTPPAction · Post #1747 · 27.03.2024 г., 03:10
#dev#IITII#merged fix: HDPost, JoyHD, SSD, HDCity, rousi Level Requirements #1755
@PTPPAction · Post #1744 · 27.03.2024 г., 02:55
#dev#IITII#merged fix(gtru): support uploads (#1772)
@PTPPAction · Post #1734 · 26.03.2024 г., 16:30
#dev#IITII#merged fix(imdb): log
@PTPPAction · Post #1714 · 25.03.2024 г., 08:55
#dev#IITII#merged site(mt): defaultQuickLinks
@PTPPAction · Post #1711 · 25.03.2024 г., 08:50
#dev#IITII#merged site(mt): bonusPerHour
@PTPPAction · Post #1708 · 25.03.2024 г., 06:45
#dev#IITII#merged site(mt): x-api-key in header
@PTPPAction · Post #1705 · 25.03.2024 г., 03:40
#dev#IITII#merged site(ourbits): cdn
@PTPPAction · Post #1690 · 24.03.2024 г., 08:20
#dev#IITII#merged fix(discfan&hd4fans): seedingSize (#1764)
@PTPPAction · Post #1680 · 21.03.2024 г., 08:05
#dev#IITII#merged feat(gtk): 适配新站点 gtk (#1760)
@PTPPAction · Post #1674 · 19.03.2024 г., 15:05
#dev#IITII#merged feat: add kufirc (#1756)
@PTPPAction · Post #1669 · 18.03.2024 г., 06:40
#dev#IITII#merged fix: 新版刷新仅限 Chromium 内核浏览器