Мені дуже сподобалися концепції у відео «Принципи чистої архітектури» дядька Боб Мартіна. Але я відчуваю, що цей шаблон є як поєднання моделей абстрактних заводів та будівельників в основі.
Навіть близько не.
Коли ви дивитесь на це:
Ви дивитесь на дизайн об’єктного графіка. Це диктує те, що відомо про що. Чого не вистачає в цій історії, як побудований цей графік об'єктів. Вибачте, але ви тут цього не знайдете. Немає жодної згадки про будівництво.
Ви можете побудувати все це без абстрактних фабрик і будівельників. Я знаю, тому що я це зробив . Я навіть не збирався їх уникати. Я люблю їх. Мені просто не трапилось їх потребувати. Я просто використав передачу посилання. Ін'єкція залежності - це вигадний термін для цього.
Насправді я міг би побудувати все, що ви бачите на цій діаграмі. Тоді просто зателефонуйте одному методу на одному об’єкті, щоб розпочати цікання всього.
Тепер речі повинні існувати, перш ніж ви зможете засунути їх в інші речі. Я дослідив це тут і дав йому цю милу маленьку діаграму:
І ви можете все це побудувати, навіть не відходячи main()
.
Я б рекомендував використовувати будівельників і фабрик, коли ви хочете розбити купу процесуального будівельного коду на приємні концептуальні шматки. Але в чистій архітектурі чи будь-якій іншій архітектурі модного слова немає нічого, що вимагає від вас. Тож якщо ви хочете дотримуватися main()
, добре. Просто будь ласка, помилуй .
Чи "Чиста архітектура" Боба Мартіна є основним правилом для всіх архітектур чи це лише один із варіантів?
Я розглядаю «Чисту архітектуру» як модну мову, що використовується для залучення людей до блогу та книги. Цей блог і книга мають дуже хороші пояснення дуже схожих старих архітектур із старими іменами, які використовуються для приведення людей до старих блогів та старих книг. Зокрема цибулю, а також порти та адаптери. Жоден з яких не є єдиним у вас архітектурним варіантом.
Мені подобається дядько Боб, тому що він дивовижний публічний оратор і автор. Він змушує мене думати про речі, які б я не мав інакше. Але якщо ви дозволите це перетворити вас на релігійного ревника, який наполягає на тому, що все потрібно зробити так, ви швидко знайдете, що оновлення документації найближче, я дам вам змогу дійти до мого коду.
Архітектура модних слів корисна, коли ви давно живете кодом, який потрібно зберігати, поки світ навколо нього змінюється. Ось тоді воно світить. Якщо світ порівняно з кодом стабільний, то ви робите речі фантазії без поважних причин.
Незалежно від того, наскільки дивним щось здається, є контекст, ви можете вкласти його, що зробить це абсурдом. Вибачте, це теж не срібна куля.
Але на відео, який я відчуваю, він пропонує, що чиста архітектура повинна мати чітку межу між логікою бізнесу та рамками. Рамки (веб, андроїд тощо) повинні бути плагінами, які підключаються до бізнес-логіки. Він навіть тонко знущається з рейок у відео.
Ти правий. Він робить. Дядько Боб вважає, що до каркасів можна ставитися як до бібліотек. І вони можуть. Але навіть це рішення чогось коштує тобі.
Те, що містер Мартін намагається зберегти, - це простір, де ваша загальна мова все ще є загальною. Ви відмовляєтесь від цього, коли розповсюджуєте рамки скрізь. Виконуючи це, ви прямуєте вниз по шляху перетворення своєї мови на щось, що називається мовою, що залежить від домену. HTML - мова, що залежить від домену. Це дуже добре працює, але є й інші завдання, які вона взагалі не може зробити.
Поки ваші потреби передбачаються рамками, все буде йти дуже гладко. Приємно передбачити ваші потреби. Він поміщає вас у вікно, яке забезпечує прості речі. Просто зрозумійте, що ви віддаєте, щоб це отримати. Якщо ви поширюєте Весну скрізь, ви більше не можете її рекламувати як роботу на Java. Це робота Java / Spring. Я міг би сказати те ж саме про Рубі і Рейлс, але Райлс давно їв обід Рубі.