Kiedy czytamy o wzorcach projektowych w Internecie, zauważamy, że istnieją 3 kategorie:
- Kreatywne
- Strukturalny
- Behawioralne
Ale kiedy tworzymy architekturę oprogramowania, myślimy o MVP, MVC lub MVVM.
Na przykład wśród wzorów kreacyjnych znalazłem wzorzec singleton , ale użyłem również singletona w moim MPV.
Moje pytanie brzmi: czy wzór projektowy jest ogólną strukturą produktu?
Jeśli tak, to w jaki sposób singleton może być wzorcem projektowym? Ponieważ mogę go używać w dowolnym miejscu w mojej aplikacji. Zasadniczo ogranicza się do tworzenia w pamięci tylko jednej instancji naraz, ale czy ta koncepcja nie definiuje sposobu projektowania oprogramowania?
Jeśli nie, to gdzie są MVP, MVC i MVVM w trzech kategoriach wzorców? Jaka jest różnica między projektem a architekturą oprogramowania?
źródło
Odpowiedzi:
Wymaga szczegółowego wyjaśnienia, ale spróbuję naszkicować różnice według mojej najlepszej wiedzy.
Wzory to destylowana wspólność, którą można znaleźć w programach. Pozwala nam na dekonstrukcję dużej złożonej konstrukcji i budowanie z prostych części. Zapewnia ogólne rozwiązanie dla klasy problemów.
Duże, złożone oprogramowanie przechodzi serię dekonstrukcji na różnych poziomach. Na ogół narzędziami są wzorce architektoniczne. Na mniejszym poziomie wzorce projektowe są narzędziami, a na poziomie wdrażania narzędziami są paradygmaty programowania.
Wzór może występować na bardzo różnych poziomach. Zobacz fraktale . Szybkie sortowanie, sortowanie przez scalanie to wszystkie algorytmiczne wzorce organizowania grupy elementów w kolejności.
Aby uzyskać najbardziej uproszczony widok:
Idiomy to specyficzne dla paradygmatu i języka techniki programowania, które wypełniają szczegóły niskiego poziomu.
Wzorce projektowe są zwykle związane z podobieństwami na poziomie kodu. Zapewnia różne schematy udoskonalania i budowania mniejszych podsystemów. Zwykle ma na to wpływ język programowania. Niektóre wzorce bledną na skutek paradygmatów językowych . Wzorce projektowe to taktyki o średniej skali, które uwydatniają niektóre struktury i zachowania jednostek i ich relacji.
Podczas gdy wzorce architektoniczne są postrzegane jako coś wspólnego na wyższym poziomie niż wzorce projektowe. Wzorce architektoniczne to strategie wysokiego poziomu, które dotyczą komponentów wielkoskalowych, globalnych właściwości i mechanizmów systemu.
Jak uzyskuje się wzory? Przez:
Jeśli zastosowałeś się do myśli przedstawionych powyżej. Przekonasz się, że Singleton to „wzorzec projektowy”, podczas gdy MVC jest jednym ze wzorców „architektonicznych” służących do rozwiązywania problemów.
Spróbuj przeczytać na:
źródło
Wzorce projektowe to dobrze znane wzorce rozwiązywania problemów technicznych w sposób, który sprawdził się wiele razy. Wzorce projektowe to typowe struktury projektowe i praktyki, które umożliwiają tworzenie oprogramowania obiektowego wielokrotnego użytku. Przykładami wzorców projektowych są wzorzec fabryczny, singleton, fasada, stan itp. Wzorce projektowe mogą być używane do rozwiązywania mniejszych problemów w całej aplikacji i są znacznie łatwiejsze do wstrzyknięcia, zmiany, dodania niż ogólna architektura
wzorce architektury są dobrze znanymi wzorcami do rozwiązywania problemów z architekturą aplikacji. Architektura aplikacji to proces definiowania ustrukturyzowanego rozwiązania, które spełnia wszystkie wymagania techniczne i operacyjne. Architektura aplikacji to ogólna „organizacja” kodu. Przykładami różnych architektur mogą być MVC, MVVM, MVP, n-warstwa (tj. UI-BLL-DAL), itp. Decyzja o architekturze zazwyczaj musi zostać podjęta z góry i często trudno jest ją zmienić po zbudowaniu aplikacji.
źródło
Elementy architektoniczne skłaniają się ku zbiorom klas lub modułów, ogólnie przedstawianych jako pudełka. Diagramy dotyczące architektury przedstawiają najwyższy poziom patrząc w dół, podczas gdy diagramy klas są na najbardziej atomowym poziomie. Celem wzorców architektury jest zrozumienie, w jaki sposób główne części systemu pasują do siebie, w jaki sposób komunikaty i dane przepływają przez system oraz inne problemy strukturalne. Wzorce architektury wykorzystują różne typy komponentów, z których każdy zazwyczaj składa się z kolejno mniejszych modułów. Każdy komponent jest odpowiedzialny w ramach architektury Wzorce projektowe są wzorcami projektowymi niskiego poziomu lub klasy dla mniejszych cząsteczek aplikacji.
Więcej informacji: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns
źródło
Cóż, w głównej mierze to kwestia języka. Z mojego doświadczenia wynika, że na pograniczu projektowania i architektury, jeśli chodzi o oprogramowanie, jest szeroka rzeka, której szerokość wynika ze stanu wody, na który z kolei wpływają głównie pory roku marketingu. Ogólnie termin „projekt” jest używany z silnym aspektem zachowania produktu oprogramowania, uznanym przez użytkowników końcowych, podczas gdy „architektura” oznacza strukturę techniczną oprogramowania, tj. Komponenty, biblioteki, protokoły i wszystko, czego potrzebuje, aby spełnić projekt. „Wzorce projektowe” pełnią dwie role: po pierwsze są uważane za najlepsze praktyki w rozwiązywaniu kategorii (mniej lub bardziej) standardowych problemów, a nie produktów; 2. pomagają programistom w komunikacji. Pozostając przy przykładzie Singletona, pozwala nam wiedzieć, na czym polega mechanika, używając po prostu słowa, zamiast wyjaśniać za każdym razem, że utworzyliśmy pojedynczą instancję przy użyciu wyznaczonej przestrzeni danych (zmiennej lub czegokolwiek), która jest ustawiona w kontrolowany sposób i gwarantuje, że będzie jedyny, ponieważ chroniliśmy konstruktora klasy itp. Więc IMHO krótka odpowiedź na twoje pytanie brzmi: To zależy od tego, kto mówi. Czy to ma jakiś sens?
źródło
Wzorce projektowe różnią się od Wzorców Architektonicznych swoim zakresem, są bardziej zlokalizowane, mają mniejszy wpływ na bazę kodu, wpływają na konkretną sekcję bazy kodu, na przykład:
Wzorce architektoniczne mają duży wpływ na podstawę kodu, najczęściej wpływając na całą aplikację poziomo (tj. Jak ustrukturyzować kod wewnątrz warstwy) lub pionowo (tj. Jak żądanie jest przetwarzane z warstw zewnętrznych do warstw wewnętrznych i plecy). Przykłady wzorców architektonicznych: Model-View-Controller, Model-View-ViewModel
źródło