Jakie wzorce projektowe są używane w systemie iOS poza MVC?

Muszę wiedzieć o wzorcach projektowych używanych w rozwoju iPhone ' a innych niż MVC.

Proszę odpowiedzieć przykładowym wyjaśnieniem lub przykładem z fragmentem kodu.

Dzięki.
Author: Devarshi, 2012-09-15

3 answers

Abstract Factory

Abstrakcyjny wzorzec fabryczny zapewnia interfejs do tworzenia rodzin powiązanych lub zależnych obiektów bez określania ich konkretnych klas. Klient jest oddzielony od każdej specyfiki betonowego obiektu uzyskanego z fabryki.

Adapter

Wzorzec projektowy adaptera przekształca interfejs klasy w inny interfejs, którego oczekują klienci. Adapter pozwala na współpracę klas, które inaczej nie mogłyby z powodu niekompatybilnych interfejsów. Oddziela klienta od klasy docelowego obiektu.

Łańcuch odpowiedzialności

Wzór łańcucha odpowiedzialności oddziela nadawcę żądania od jego odbiorcy, dając więcej niż jednemu obiektowi szansę na rozpatrzenie żądania. Wzorzec łączy obiekty odbierające ze sobą i przekazuje żądanie wzdłuż łańcucha, dopóki obiekt go nie obsłuży. Każdy obiekt w łańcuchu albo obsługuje żądanie, albo przekazuje je do następny obiekt w łańcuchu.

Command

Wzorzec projektowy polecenia zawiera żądanie jako obiekt, umożliwiając w ten sposób sparametryzowanie klientów różnymi żądaniami, kolejkami lub logami oraz obsługę operacji niemożliwych do wykonania. Obiekt request łączy ze sobą jedną lub więcej akcji na określonym odbiorniku. Wzorzec polecenia oddziela obiekt wykonujący żądanie od obiektów, które otrzymują i wykonują to żądanie.

Composite

The Złożony wzorzec projektowy komponuje powiązane obiekty w struktury drzewiaste, aby reprezentować hierarchie część-całość. Wzorzec pozwala klientowi traktować poszczególne obiekty i kompozycje obiektów jednolicie. Wzorzec złożony jest częścią wzorzec zbiorczy model-widok-kontroler.

Dekorator

Dekorator wzorca projektowego przywiązuje dodatkowe obowiązki do obiektu dynamicznie. Dekoratory stanowią elastyczną alternatywę dla podklasowania w celu rozszerzenia funkcjonalności. Jako czy podklasowanie, adaptacja wzorca dekoratora pozwala na włączenie nowego zachowania bez modyfikowania istniejącego kodu. Dekoratorzy owijają obiekt klasy, którego zachowanie rozszerzają. Implementują ten sam interfejs co obiekt, który zawijają i dodają własne zachowanie przed lub po delegowaniu zadania do owiniętego obiektu. Wzór dekoratora wyraża zasadę projektowania, że klasy powinny być otwarte na rozszerzenie, ale zamknięte na modyfikacja.

Fasada

Wzór konstrukcyjny fasady zapewnia jednolity interfejs do zestawu interfejsów w podsystemie. Wzorzec definiuje interfejs wyższego poziomu, który ułatwia korzystanie z podsystemu poprzez zmniejszenie złożoności i ukrywanie komunikacji i zależności między podsystemami.

Iterator

Wzorzec projektowy iteratora umożliwia dostęp do elementów obiektu agregowanego (czyli zbioru) sekwencyjnie bez odsłaniając jego podstawową reprezentację. Wzorzec iteratora przenosi odpowiedzialność za dostęp i przemierzanie elementów kolekcji z samej kolekcji do obiektu iteratora. Iterator definiuje interfejs dostępu do elementów kolekcji i śledzi bieżący element. Różne Iteratory mogą prowadzić różne strategie trawersowania.

Mediator

Wzorzec projektowy mediatora definiuje obiekt, który enkapsuluje jak zbiór obiektów interakcja. Mediator Promuje luźne sprzężenie, powstrzymując obiekty od wyraźnego odniesienia się do siebie i pozwala zmieniać ich interakcję niezależnie. Obiekty te mogą więc pozostać bardziej wielokrotnego użytku. "Obiekt mediatora" w tym wzorze centralizuje złożoną logikę komunikacji i sterowania między obiektami w systemie. Obiekty te informują obiekt mediator, kiedy ich stan się zmienia i z kolei odpowiadają na żądania obiektu mediator.

Memento

The Memento wzorzec przechwytuje i uzewnętrznia wewnętrzny stan obiektu-bez naruszania hermetyzacji - tak, że obiekt może zostać przywrócony do tego stanu później. Wzór Memento utrzymuje ważny stan kluczowego obiektu na zewnątrz od tego obiektu, aby zachować spójność.

Observer

Wzorzec projektowy obserwatora definiuje zależność od jednego do wielu obiektów, tak że gdy jeden obiekt zmienia stan, wszystkie jego zależności są powiadamiane i aktualizowane automatycznie. Wzór obserwatora jest zasadniczo modelem publikowania i subskrybowania, w którym temat i jego obserwatorzy są luźno powiązani. Komunikacja może odbywać się między obserwowanymi i obserwowanymi obiektami bez potrzeby wiedzy o innych.

Proxy

Wzorzec projektowy Proxy zapewnia zastępczy lub zastępczy element dla innego obiektu w celu kontrolowania dostępu do tego innego obiektu. Za pomocą tego wzorca tworzy się obiekt reprezentacyjny lub proxy, który kontroluje dostęp do innego obiektu obiekt, który może być odległy, kosztowny w tworzeniu lub wymagający zabezpieczenia. Ten wzorzec jest strukturalnie podobny do wzorca dekoratora, ale służy innemu celowi; dekorator dodaje zachowanie do obiektu, podczas gdy Proxy kontroluje dostęp do obiektu.

Recepcjonistka

Wzorzec projektowy recepcjonisty rozwiązuje Ogólny problem przekierowania zdarzenia występującego w jednym kontekście wykonania aplikacji do innego kontekstu wykonania w celu obsługi. Jest to hybryda wzór. Chociaż nie pojawia się w książce "Gang czterech", łączy w sobie elementy wzorców projektowych Komendy, Memo i Proxy opisanych w tej książce. Jest to również wariant wzoru trampoliny (który również nie pojawia się w książce); w tym wzorze Zdarzenie początkowo jest odbierane przez obiekt trampoliny, tak zwany, ponieważ natychmiast odbija lub przekierowuje Zdarzenie do obiektu docelowego do obsługi.

Singleton

Wzór projektu Singletona zapewnia klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do niej. Klasa śledzi swoją jedyną instancję i zapewnia, że żadna inna instancja nie może zostać utworzona. Klasy Singleton są odpowiednie w sytuacjach, w których pojedynczy obiekt ma sens, aby zapewnić dostęp do globalnego zasobu.

Metoda Szablonu

Wzorzec projektowy metody szablonowej definiuje szkielet algorytmu w operacji, odkładając niektóre kroki do podklas. Metoda Szablonowa wzorzec pozwala podklasom na Redefiniowanie pewnych kroków algorytmu bez zmiany jego struktury.

Źródło: Cocoa Design Patterns .

 108
Author: DrummerB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-15 10:33:38

W rzeczywistych aplikacjach bazy kodu stają się z czasem skomplikowane, a w rezultacie otrzymujesz ogromne Kontrolery widoku, które są trudne do przetestowania i utrzymania. Rozwiązaniem jest użycie MVVM , który jest lepszą alternatywą dla MVC it self.

 2
Author: Jani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-06 03:49:53

Używanie wzorca projektowego MVVM w aplikacji jest związane z logiką biznesową, którą wykonasz w projekcie, aby wyświetlić niektóre treści na widoku. Incase twój widok nie potrzebuje więcej logiki, aby wyświetlić jego zawartość można użyć MVC ale jeśli musisz zrobić logikę biznesową, aby wyświetlić te treści na widoku, najlepszą praktyką w tym przypadku jest oddzielenie tej logiki, aby była w innej warstwie, aby MVVM było lepsze w tym przypadku,ViewModel w MVVM będzie zawierał tę logikę.

Moim zdaniem MVVM jest lepszy niż MVC w projektowaniu poziomów z tych powodów

  • MVVM jest kompatybilny z istniejącą architekturą MVC.
  • MVVM sprawia, że Twoje aplikacje są bardziej testowalne.
  • MVVM działa najlepiej z mechanizmem wiążącym.

Jak MVVM jest kompatybilny z MVC

  • MVC > Model, widok, kontroler
  • MVVM > Model, View, ViewModel > Model, (ViewController), viewmodel
 1
Author: Ahmed Askar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-18 17:37:08