Ile wzorów ma Magento?


Odpowiedzi:


37

Wzory projektowe Magento 1/2

Część 1: MVC

Magento wykorzystuje unikalny wzorzec MVC, wykorzystując warstwę konfiguracyjną opartą na DOM. Wykorzystuje xml do sterowania konfiguracją i działaniami aplikacji w stosunku do zwykłej architektury Model-View-Controller.

Część 2: Front Controller

Magento używa wzorca kontrolera frontowego do implementacji przepływów pracy dla swojej aplikacji. Ma jeden punkt wejścia (index.php) dla wszystkich swoich żądań. Zobaczmy, jak to wszystko działa.

Część 3: Fabryka

Metodę fabryczną stosuje się do tworzenia instancji klas w Magento. Inicjujesz klasę w Magento, wywołując odpowiednią metodę, przekazując abstrakcyjną nazwę reprezentującą grupę klas, po której następuje nazwa klasy. Grupy klas i ich odpowiednie abstrakcje są deklarowane w plikach konfiguracyjnych XML w folderze / etc / modułu.

Część 4: Singleton

Podobnie jak w przypadku fabrycznej abstrakcji klas i grup klas w Magento, wzór Singleton jest tworzony tak samo dla bloków i klas.

Część 5: Rejestr

Wzorzec rejestru jest w zasadzie wzorcem, który umożliwia dostęp do dowolnego obiektu lub danych w publicznym globalnym zasięgu dla dowolnego zasobu.

Część 6: Prototyp

Wzór prototypowy w Magento jest używany jako rozszerzenie wzoru fabryki abstrakcyjnej. Zapewnia tworzenie instancji odpowiedniej podklasy za pomocą odpowiednich typów przypisanych do obiektu. Co to znaczy? Zasadniczo oznacza to, że za każdym razem, gdy trzeba uzyskać określoną klasę zdefiniowaną za pomocą jej typu nadrzędnego, wzorzec prototypowy zapewnia uzyskanie odpowiedniej klasy, która może obsłużyć to, czego potrzebujesz.

Część 7: Pula obiektów

Wzorzec puli obiektów sprawia, że ​​obiekty są gotowe do użycia w kółko, zamiast ponownego tworzenia ich instancji i niszczenia po zakończeniu. Jest to świetny sposób na zaoszczędzenie zużycia pamięci i cykli obliczeniowych.

Część 8: Iterator

Iterator Pattern to wzorzec projektowy, który umożliwia obiektowi przechodzenie przez elementy innej klasy. Umożliwia to określenie iteratora i pozwala na przekazywanie wielu różnych zestawów danych bez zmiany podstawowej struktury, która umożliwia iterację.

Część 9: Leniwe ładowanie

Leniwe ładowanie to wzorzec projektowy, który opóźnia ładowanie obiektu do czasu wywołania obiektu. W Magento nie wykorzystują tego w przypadku obiektów, ale danych.

Część 10: Lokalizator usług

Lokalizator usług to wzorzec projektowy, który pozwala użytkownikowi uzyskać usługę poprzez enkapsulację procesu wewnątrz warstwy abstrakcji. Dzięki temu użytkownik może pobrać odpowiednią lub najlepszą usługę, nie wiedząc, jaka jest ta usługa w czasie wykonywania.

Część 11: Moduł

Wzorzec projektowania modułów jest formą programowania modułowego, która podkreśla grupowanie funkcjonalności programu w niezależne, wymienne moduły.

Część 12: Obserwator

Wzorzec obserwatora to miejsce, w którym detektor zdarzeń jest ustawiany w pewnym momencie podczas wykonywania aplikacji. Inne komponenty aplikacji mogą „zaczepić się” w tym detektorze zdarzeń i wykonać swój kod w tym momencie.

Część 13: Aktywny zapis

Obiekty są reprezentacją wiersza w tabeli bazy danych. Obiekty te powinny mieć właściwości odzwierciedlające kolumny reprezentujące strukturę tabeli oraz metody umożliwiające modyfikację tych właściwości w bazie danych.

Zastosowanie wzoru przez Magento

Klasy dziedziczące po klasie Mage_Core_Model_Abstract mają dostęp do metod load (), save () i delete (), które umożliwiają ładowanie, modyfikację, tworzenie lub usuwanie rekordów w tabeli, z którą klasa jest połączona. Dodatkowo klasa Mage_Core_Model_Abstract dziedziczy po Varien_Object, który daje nam dostęp do naprawdę magicznych metod __set () i __get (), które są odpowiedzialne za automatyczne mapowanie kolumn w tabeli bazy danych z właściwościami danego obiektu.

Dodatek Magento 2

WZÓR USŁUG KONSTRUKCYJNYCH

Magento to system oparty na rozszerzeniach lub modułowy, który pozwala zewnętrznym programistom dostosowywać i zastępować podstawowe elementy jego frameworka. Dostosowania te mogą powodować szereg problemów, na przykład programiści będą mogli śledzić dostosowywanie wykonywane przez rozszerzenia zewnętrzne. Dlatego w celu przezwyciężenia tego Magento przedstawia wzór umowy serwisowej. Umowa o świadczenie usług to zestaw interfejsów, które działają jak warstwa między użytkownikiem końcowym a warstwą biznesową. W ten sposób, zamiast bezpośrednio ujawniać logikę biznesową w celu dostosowania do użytkownika końcowego, pojawia się warstwa zwana umową serwisową.

Umowy serwisowe zwiększają modułowość Magento. Pomaga sprzedawcom w łatwej aktualizacji Magento Zapewnij dobrze zdefiniowane i trwałe API, które wdrażają inne moduły zewnętrzne i Magento. Zapewniają łatwy sposób na ujawnienie logiki biznesowej za pośrednictwem interfejsów REST lub SOAP.

KIEROWNIK OBIEKTU

Sam składa się z różnych wzorów, takich jak: - wtrysk zależności, Singleton, fabryka, fabryka abstrakcyjna, kompozyt, strategia, CQRS, dekorator i wiele innych. Omówimy niektóre z najczęściej używanych wzorów wśród nich. Menedżer obiektów ma do odegrania bardzo dużą rolę, Magento zabrania jego bezpośredniego użycia. Menedżer obiektów jest odpowiedzialny za wdrażanie wzorców fabrycznych, singletonów i proxy. Automatycznie tworzy instancję parametru w konstruktorach klas. Przed przesunięciem przyszłości pozwala zrozumieć przedmioty, które można wstrzykiwać i nie wstrzykiwać:

OBIEKTY WTRYSKOWE

Nie mają własnej tożsamości, takiej jak EventManager, CustomerAccountManagementService.

OBIEKTY NIEWSTRZYKIWALNE

Takich jak klient, produkt itp. Podmioty te zazwyczaj mają swoją tożsamość i stan, ponieważ mają one swoją tożsamość, ważne jest, aby wiedzieć, na którym dokładnie egzemplarzu podmiotu musimy pracować.

WTRYSK ZALEŻNOŚCI

Jest to alternatywa dla Mag w in magento 1. Jest to koncepcja wstrzykiwania zależnego obiektu przez środowisko zewnętrzne, zamiast tworzenia go wewnętrznie. W związku z tym będziemy prosić o zasób, gdy tworzony jest nasz obiekt, zamiast tworzyć zasób w razie potrzeby. Pomaga to w przyszłych modyfikacjach, a testowanie staje się bardzo łatwe przez wyśmiewanie wymaganych obiektów.

WZÓR FABRYCZNY LUB ZAJĘCIA FABRYCZNE:

W Magento 2 Factory klasy tworzą warstwę między menedżerem obiektów a kodem biznesowym. Klasy fabryczne nie muszą jawnie definiować, ponieważ są generowane automatycznie. Powinniśmy tworzyć klasy fabryczne dla przedmiotów niewtryskiwalnych.

WZÓR PROXY

Klasy proxy są używane do pracy zamiast innej klasy, aw Magento 2 są czasami używane zamiast klas wymagających dużych zasobów. Aby zrozumieć, jakie klasy proxy działają, zobaczmy przyczynę, która prowadzi do wystąpienia klas proxy. Ponieważ wiemy, że Magento używa iniekcji konstruktora do tworzenia obiektów, a kiedy tworzymy instancję obiektu, wszystkie klasy w jego konstruktorze również będą tworzyć instancję, co prowadzi do łańcucha tworzenia instancji za pośrednictwem konstruktora, może to naprawdę spowolnić proces i wpłynąć na wydajność aplikacji , aby zatrzymać tworzenie łańcucha, Magento używa klas proxy.

Pozwala zobaczyć następujący kod:

Magento\Catalog\Model\Product\Attribute\Source\Status\Proxy

Magento\Catalog\Model\Product\Link\Proxy

W powyższym kodzie używamy klas proxy dla catalogProductStatus i productLink. Kiedy biegniemy

 php bin/magento setup:di:compile 

Magento tworzy klasy proxy w locie za pomocą di.xml z pewnymi ustalonymi konwencjami, zastępując w ten sposób oryginalny obiekt obiektem klasy proxy. Teraz spójrzmy na naszą klasę proxy, aby zrozumieć, jak to działa

Niektóre typowe konwencje Magento obowiązują podczas tworzenia proxy: -

  • Przestrzeń nazw klasy proxy będzie taka sama jak oryginalna (Magento \ Catalog \ Model \ Product \ Attribute \ Source \ Status)
  • Klasa proxy rozszerza tylko jeden obiekt, tj. Menedżera obiektów
  • Ma funkcje magiczne, takie jak __sleep, __wake, które są wywoływane tylko w przypadku określonej akcji, a funkcja, taka jak __clone, tworzy obiekt oryginalnej klasy i zapewnia obiekt tylko wtedy, gdy jest potrzebny (wykorzystując leniwy wzór ładowania projektu ), poprawiając w ten sposób wydajność aplikacji https://devdocs.magento.com/guides/v2.0/extension-dev-guide/proxies.html

Wtyczki (przechwytywacze)

Przegląd

Wtyczka lub przechwytywacz to klasa, która modyfikuje zachowanie funkcji klasy publicznej, przechwytując wywołanie funkcji i uruchamiając kod przed, po lub wokół tego wywołania funkcji. Pozwala to na zastąpienie lub rozszerzenie zachowania oryginalnych, publicznych metod dla dowolnej klasy lub interfejsu.

Rozszerzenia, które chcą przechwytywać i zmieniać zachowanie metody publicznej, mogą tworzyć klasę wtyczek, które są nazywane wtyczkami.

Takie podejście do przechwytywania zmniejsza konflikty między rozszerzeniami, które zmieniają zachowanie tej samej klasy lub metody. Implementacja klasy wtyczki zmienia zachowanie funkcji klasy, ale nie zmienia samej klasy. Ponieważ można je wywoływać sekwencyjnie zgodnie ze skonfigurowaną kolejnością sortowania, te przechwytywacze nie kolidują ze sobą.

Ograniczenia

Wtyczek nie można używać z żadnym z poniższych:

  • Ostateczne metody
  • Klasy końcowe
  • Metody niepubliczne
  • Metody statyczne
  • __skonstruować
  • Typy wirtualne
  • Obiekty, które są tworzone przed utworzeniem Magento \ Framework \ Interception, są ładowane
  • Obiekty, które nie są tworzone przez ObjectManager (np. Poprzez bezpośrednie użycie nowego). https://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html

ObjectManager

Przegląd

Duże aplikacje, takie jak aplikacja Magento, używają menedżera obiektów, aby unikać tworzenia kodu podczas tworzenia obiektów podczas tworzenia instancji.

W ramach Magento implementacja ObjectManagerInterface wykonuje obowiązki menedżera obiektów.

Obowiązki

Menedżer obiektów ma następujące obowiązki:

Tworzenie obiektów w fabrykach i serwerach proxy. Implementowanie wzorca singletonu poprzez zwracanie tej samej współużytkowanej instancji klasy na żądanie. Zarządzanie zależnościami przez utworzenie instancji preferowanej klasy, gdy konstruktor zażąda interfejsu. Automatyczne tworzenie instancji parametrów w konstruktorach klas. https://devdocs.magento.com/guides/v2.0/extension-dev-guide/object-manager.html

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.