Wzory wzorów zostały podzielone na trzy ogólne kategorie w 1994 roku przez Grupa Gang Czterech. Wzorce projektowe opracowane w celu zarządzania tworzeniem obiektów nazywane są kreacyjnymi wzorcami projektowymi. Prototyp wzór projektowy jest jednym ze wzorców projektowych konstruktora, służącym do zapobiegania budowie nowego obiektu.
Ten szablon projektu umożliwia utworzenie nowego obiektu poprzez skopiowanie go z innych istniejących obiektów. Korzystając z tej techniki, w oprogramowaniu można tworzyć nowe obiekty bez zależności. Pomiędzy nowym obiektem a klasą, z której jest wykonany; także w przypadkach, gdy zachodzi potrzeba wprowadzenia zmian w nowych obiektach. Abyśmy mogli tworzyć obiekty tego samego typu i o różnych parametrach.
Na przykład wyobraź sobie, że chcesz wykonać wiele kopii obiektu maszyny, z tą różnicą, że każdy ma inny kolor. Używając szablon projektu prototypunie musisz już za każdym razem tworzyć nowego obiektu klasy, a następnie określać jego parametrów, ponieważ możesz utworzyć obiekt z klasy maszyny, a następnie utworzyć tyle samo klony tak jak potrzebujesz.
Dlaczego powinniśmy używać szablonu projektu Prototype?
Wyobraź sobie przez chwilę, że zostałeś przeniesiony do karmicznego świata Earla. Dla posiadacza tego samolotu jedyną drogą naprzód będzie dokładne poznanie parametrów i cech konstrukcyjnych jego zewnętrznego prototypu. Ponieważ jednak technologie lotnicze są zastrzeżone i nie są łatwo dostępne dla innych firm, nie będzie to możliwe. Ale wyobraź sobie, że masz gigantyczną kopiarkę 3D do symulacji obiektów. W ten sposób możesz zaimportować obcy statek powietrzny do tego urządzenia i otrzymać samolot symulacyjny. Ten symulator robi to samo, co prototypowy wzorzec projektowy.
Jeśli więc chcesz wykonać dokładną kopię obiektu w programie, musisz najpierw utworzyć nowy obiekt żądanej klasy. Następnie musisz pobrać wszystkie parametry i właściwości oryginalnego obiektu i zastosować je do nowego obiektu. Ale ta metoda nie zawsze będzie działać poprawnie, ponieważ niektóre parametry i właściwości obiektu mogą być zdefiniowany prywatnie. W takim przypadku dostęp do nich spoza sali lekcyjnej nie będzie już możliwy.
Dlatego jednym z problemów kopiowania obiektów bezpośrednio w programowaniu jest brak dostępu do niektórych tajnych parametrów. Dlatego nie zawsze będzie możliwe skopiowanie obiektu poza jego klasę. Z drugiej strony, ponieważ tworzysz zduplikowane obiekty w oparciu o klasy obiektu źródłowego, nowe obiekty stają się zależne od tych klas, co powoduje wiele zależności pomiędzy klasami.
Prototypowe rozwiązanie wzorca projektowego
Prototypowy wzorzec projektowy zapewnia wspólny interfejs dla wszystkich kopiowanych obiektów. Interfejs ten umożliwia kopiowanie obiektu bez przepisywania kodu w klasie obiektu. Zwykle taki interfejs zawiera tylko jedną funkcję zwaną klonem. Zatem stosując się do klas obiektów tego interfejsu, nie będziemy już musieli pisać dodatkowych funkcji ani używać ich do odtworzenia obiektu. Wystarczy zaimplementować w klasach funkcję Clone.
Implementacja funkcji Clone jest bardzo podobna we wszystkich klasach. Funkcja ta ma za zadanie utworzyć obiekt aktualnej klasy, a następnie przenieść wszystkie wartości jego parametrów do nowego obiektu. Kolejną zaletą tego szablonu projektu jest to, że można nawet kopiować parametry Private, ponieważ większość języków programowania umożliwia obiektom dostęp do prywatnych pól z innych obiektów należących do klasy.
Obiekty, których klasy obsługują kopiowanie Czy zwany prototypy. Ponadto, gdy obiekty mają dziesiątki parametrów i setki ustawień, można użyć zduplikowanych obiektów jako substytutu klas podrzędnych. Nie będziesz już musiał budować klas podrzędnych z klasy głównej w oprogramowaniu, ponieważ możesz modyfikować obiekty w oparciu o klasę główną, aby dostosować je do swoich potrzeb.
Jeśli więc chcemy podsumować działanie tego szablonu, musimy najpierw stworzyć zestaw obiektów skonfigurowanych na różne sposoby. Wtedy kiedykolwiek będziesz potrzebował obiektu w jednej ze skonfigurowanych konfiguracji, stwórz na jego podstawie prototyp, a nie będziesz już musiał budować nowego obiektu od zera.
Przykład wzorca projektowego prototypu ze świata rzeczywistego
Prototypy służą do przeprowadzenia różnych testów przed rozpoczęciem masowej produkcji w świecie rzeczywistym. Jednak w tym wzorcu projektowym prototypy nie są wykorzystywane do różnych testów ani kontroli jakości. Próbki wykonane w tej technice wykorzystywane są bezpośrednio w wymaganych częściach oprogramowania. Dlatego proces podziału komórki jest niemal najlepszym przykładem tego wzorca projektowego w świecie rzeczywistym.
Wyobraź sobie, że definiujesz w oprogramowaniu klasę zwaną komórką. Aby ta komórka stała się rozwiniętym organizmem, musi się rozmnażać i tworzyć prototypy. Będziemy więc potrzebować tysięcy lub milionów obiektów w tej klasie, aby uformować różne narządy żywej istoty, każdy z nich ma swoje zadanie. Teraz wyobraź sobie, ile czasu byś zmarnował, gdybyś miał zbudować wszystkie te obiekty bezpośrednio i jeden po drugim i określić ilościowo ich parametry.
W związku z tym najlepszym sposobem na osiągnięcie tego byłoby użycie prototypowego wzorca projektowego. Ponieważ w tym modelu komórki zostaną skopiowane na podstawie oryginalnej komórki i nie będzie potrzeby tworzenia komórek i ustawiania ich parametrów na podstawie oryginalnej komórki jedna po drugiej. Biorąc pod uwagę, że podczas podziału komórki z pierwotnej komórki powstają nowe komórki, można powiedzieć, że pierwotna komórka pełni rolę prototypu.
Zastosowania wzorców projektowych prototypów
Użycie prototypowego wzorca projektowego w projektowaniu oprogramowania zmniejszy ilość kodu. Główną zaletą tego wzoru jest zwiększona prędkość kopiowania obiektu z obiektu. Ponieważ jest to znacznie szybsze niż tworzenie obiektów, podczas kopiowania obiektów funkcja konstruktora nie będzie już wykonywana. Wzorzec projektowy konstruktora zostanie zastosowany w następujących przypadkach:
- Stosowane są w celu zmniejszenia liczby klas potomnych (Podklas). Dzięki tej metodzie budowane obiekty można konfigurować według różnych potrzeb.
- Służy do zapobiegania zależności pomiędzy kopiowanym obiektem a klasą.
- Gdy chcemy utworzyć obiekt z klasy z wieloma parametrami Private.
Zaimplementuj prototypowy wzorzec projektowy
W tej sekcji dokonamy przeglądu etapów wdrażania szablonu projektu prototypu; następnie zaimplementujemy ten szablon w formie przykładu przy użyciu języka programowania PHP. Etapy implementacji tego szablonu są następujące:
- Najpierw musisz zdefiniować interfejs. Następnie utwórz funkcję o nazwie Clone. Pożądane klasy muszą następnie podążać za tym interfejsem i implementować funkcję Clone. Ten krok reguluje oprogramowanie i można go zignorować, jeśli zostanie wykryty.
- Następnie w klasie prototype należy zdefiniować nową metodę Konstruktora o nazwie Clone. Konstruktor ten odpowiada za pobranie wartości parametrów zdefiniowanych w klasie z pierwotnego obiektu i przesłanie ich do nowo utworzonej instancji.
Przykład prototypowego wzorca projektowego w świecie rzeczywistym
Ten przykład pokazuje, jak skopiować stronę z wieloma parametrami przy użyciu szablonu prototypowego. Klasa strony posiada wiele parametrów Private przekazywanych do kopiowanego obiektu dzięki wzorcowi prototypowemu. Ponieważ jeśli chcemy zapisać wersję roboczą z tej strony, musimy otrzymać wszystkie jej parametry, co bez zastosowania tej metody nie będzie możliwe ze względu na prywatność parametrów klasy.
php / ** * Prototyp. * / klasa Strona { prywatny $ tytuł; prywatne $ ciało ; / ** * @var Autor * / prywatny $ autor; prywatne $ komentarze = []; / ** * @var \ DateTime * / private $ date; // +100 pól prywatnych. funkcja publiczna __construct (string $tytuł, string $treść, Autor $autor) {$to -> tytuł = $tytuł; $ to -> ciało = $ ciało; $ to -> autor = $ autor ; $ this -> autor-> addToPage ( $ this ); $ this -> date = new \ DateTime; } funkcja publiczna addComment ( string $ komentarz ): void { $ this -> komentarze [] = $ komentarz; } / ** * Możesz kontrolować, jakie dane chcesz przenieść do sklonowanego obiektu. * * Na przykład, gdy strona jest klonowana: * – Otrzymuje nowy tytuł „Kopia …”. * – Autor strony pozostaje ten sam. Dlatego przy dodawaniu sklonowanej strony do listy * stron autora pozostawiamy *odniesienie do istniejącego obiektu. * – Nie przenosimy komentarzy ze starej strony. * – Do strony dołączamy także nowy obiekt daty. * / funkcja publiczna __clone () this $ this -> title = „Kopia” . $ to -> tytuł; $ this -> autor-> addToPage ( $ this ); $ to -> komentarze = []; $ this -> date = new \ DateTime; } } klasa Autor { prywatny $ nazwa; / ** * @var Strona []
* / prywatne $ strony = []; funkcja publiczna __construct (string $nazwa) { $to -> nazwa = $nazwa; } funkcja publiczna addToPage ( Strona $ strona ): unieważnij to $ to -> strony [] = $ strona; } } / ** * Kod klienta. * / funkcja ClientCode () autor $ autor = nowy autor („ Mehdi Allameh” ); $ strona = nowa strona („Wskazówka dnia”, „Zachowaj spokój i kontynuuj.”, $ autor ); // … $ strona -> addComment ( “Niezła wskazówka, dzięki!” ); // … $ wersja robocza = klon $ strona ; echo “Zrzut klona. Zauważ, że autor odwołuje się teraz do dwóch obiektów. \ n \ n” ; print_r ($wersja robocza); } kod klienta ();
Wniosek
Wzorzec projektowy prototypu uniemożliwia zbudowanie nowego obiektu. Użycie tej techniki w programowaniu obiektowym będzie miało wiele zalet. Jak widać, w przeciwieństwie do innych wzorców projektowych, wdrożenie tego wzorca jest bardzo proste. Jak myślisz, w jakich zastosowaniach można zastosować ten wzorzec projektowy w oprogramowaniu? Czy kiedykolwiek korzystałeś z tego szablonu?
Pobierz bezpłatne motywy WordPress PremiumPobierz motywy WordPress za darmoPobierz zerowe motywy WordPressPobieranie premium motywów WordPressbezpłatny kurs onlinepobierz oprogramowanie HuaweiPobierz najlepsze motywy WordPress do pobrania za darmodarmowy kurs Udemy do pobrania