Bardzo podobały mi się koncepcje zawarte w filmie „Zasady czystej architektury” autorstwa wuja Boba Martina. Ale wydaje mi się, że ten wzór jest kombinacją wzorców Abstract Factory i Builder w jego rdzeniu.
Nawet nie blisko.
Kiedy na to spojrzysz:
Patrzysz na projekt wykresu obiektowego. To dyktuje, co wie o czym. W tej historii brakuje tego, jak zbudowano ten wykres obiektowy. Przepraszam, ale nie znajdziesz tego tutaj. Nie ma wzmianki o budowie.
Możesz to wszystko zbudować bez abstrakcyjnych fabryk i konstruktorów. Wiem, bo to zrobiłem . Nawet nie chciałem ich unikać. Kocham ich. Po prostu nie potrzebowałem ich. Właśnie wykorzystałem przekazywanie referencji. Dependency Injection to wymyślny termin.
W rzeczywistości mógłbym zbudować wszystko, co widzisz na tym schemacie. Następnie wystarczy wywołać jedną metodę na jednym obiekcie, aby rozpocząć tykanie.
Teraz rzeczy muszą istnieć, zanim będziesz mógł je wrzucić do innych rzeczy. Zbadałem to tutaj i podałem mu ten słodki mały schemat:
Możesz to wszystko zbudować, nawet nie wychodząc main()
.
Polecam korzystanie z konstruktorów i fabryk, jeśli chcesz rozbić stos proceduralnych kodów konstrukcyjnych na niezłe fragmenty pojęć. Ale nie ma nic w czystej architekturze ani żadnej innej modnej architekturze, która wymagałaby tego. Więc jeśli chcesz się trzymać main()
, dobrze. Proszę, zmiłuj się .
Czy „Czysta architektura” Boba Martina jest ogólną zasadą dla wszystkich architektur, czy jest to tylko jedna z opcji?
Uważam, że „Czysta architektura” to modne hasło, które prowadzi ludzi do bloga i książki. Ten blog i książka mają bardzo dobre wyjaśnienia bardzo podobnych starszych Architektur o starszych nazwach używanych do kierowania ludzi do starszych blogów i starszych książek. W szczególności cebula, a także porty i adaptery. Żadna z nich nie jest jedyną dostępną opcją architektoniczną.
Lubię wujka Boba, ponieważ jest niesamowitym mówcą i autorem. Sprawia, że myślę o rzeczach, których inaczej nie miałbym. Ale jeśli pozwolisz, aby zmieniło cię to w religijnego fanatyka, który nalega, aby wszystko zrobić po swojemu, szybko przekonasz się, że aktualizacja dokumentacji jest najbliższa, na którą pozwolę ci przejść do mojego kodu.
Architektury modnego hasła są przydatne, gdy masz długowieczny kod, który musi się utrzymywać, podczas gdy świat zmienia się wokół niego. Właśnie wtedy świeci. Jeśli świat jest stabilny w porównaniu z kodem, to robisz coś eleganckiego bez powodu.
Bez względu na to, jak niesamowite wydaje się coś, istnieje kontekst, w którym można go umieścić, co sprawi, że będzie to absurdalne. Przepraszam, to też nie jest srebrna kula.
Ale w tym filmie sugeruję, że czysta architektura powinna mieć wyraźną granicę między logiką biznesową a strukturami. Frameworki (web, android itp.) Powinny być wtyczkami podłączanymi do logiki biznesowej. Nawet subtelnie kpi z szyn w filmie.
Masz rację. On robi. Wujek Bob uważa, że frameworki można traktować jak biblioteki. I mogą. Ale nawet ta decyzja kosztuje cię coś.
To, co pan Martin stara się zachować, to przestrzeń, w której twój język ogólnego przeznaczenia jest nadal ogólny. Porzucisz to, gdy wszędzie rozpowszechnisz framework. Kiedy to zrobisz, zmierzasz w kierunku przekształcenia swojego języka w coś, co nazywa się językiem specyficznym dla domeny. HTML jest językiem specyficznym dla domeny. Wykonuje swoją pracę bardzo dobrze, ale są inne prace, których w ogóle nie można wykonać.
Tak długo, jak ramy będą przewidywać twoje potrzeby, wszystko pójdzie bardzo gładko. Miło jest przewidywać twoje potrzeby. To stawia Cię w pudełku, które upraszcza sprawę. Po prostu zrozum, co poświęcasz, aby to zdobyć. Jeśli rozpowszechniasz Spring wszędzie, nie możesz go już reklamować jako pracy Java. To praca Java / Spring. Mógłbym powiedzieć to samo o Ruby i Railsach, ale Rails już dawno zjadł lunch Ruby.