Подтвердить что ты не робот

Какие шаблоны проектирования используются в iOS, кроме MVC?

Мне нужно знать о шаблонах дизайна, используемых в разработке iPhone, отличных от MVC.

Пожалуйста, ответьте с помощью любого примера или примера с фрагментом кода.

Спасибо.

4b9b3361

Ответ 1

Аннотация Factory

Абстрактный шаблон Factory предоставляет интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов. Клиент отделен от любой специфики конкретного объекта, полученного из factory.

Адаптер

Шаблон проектирования адаптера преобразует интерфейс класса в другой интерфейс, который ожидают клиенты. Адаптер позволяет классам работать вместе, что в противном случае не может быть связано с несовместимыми интерфейсами. Он отделяет клиента от класса целевого объекта.

Цепочка ответственности

Шаблон дизайна цепочки ответственности отделяет отправителя запроса от его получателя, предоставляя более одного объекта возможность обрабатывать запрос. Шаблон объединяет принимающие объекты и передает запрос по цепочке до тех пор, пока объект не обработает его. Каждый объект в цепочке либо обрабатывает запрос, либо передает его следующему объекту в цепочке.

Команда

Шаблон проектирования команд инкапсулирует запрос как объект, тем самым позволяя вам параметризовать клиентов с различными запросами, запросами очереди или журналов и поддерживать отмененные операции. Объект запроса связывает одно или несколько действий с конкретным получателем. Шаблон команды отделяет объект, отправляющий запрос от объектов, которые получают и выполняют этот запрос.

Композит

Композитный шаблон проектирования объединяет связанные объекты в древовидные структуры для представления иерархии целого целого. Шаблон позволяет клиентам одинаково обрабатывать отдельные объекты и композиции объектов. Паттерн Composite является частью совокупного шаблона Model-View-Controller.

Decorator

Шаблон проектирования Decorator придает дополнительную ответственность за объект динамически. Декораторы обеспечивают гибкую альтернативу подклассу для расширения функциональности. Как и подклассификация, адаптация шаблона Decorator позволяет вам вводить новое поведение без изменения существующего кода. Декораторы обертывают объект класса, поведение которого они распространяются. Они реализуют тот же интерфейс, что и объект, который они обертывают, и добавляют свое собственное поведение до или после делегирования задачи обернутому объекту. Шаблон Decorator выражает принцип проектирования, что классы должны быть открыты для расширения, но закрыты для модификации.

Фасад

Шаблон проектирования Facade обеспечивает унифицированный интерфейс для набора интерфейсов в подсистеме. Шаблон определяет интерфейс более высокого уровня, который упрощает использование подсистем, уменьшая сложность и скрывая связь и зависимости между подсистемами.

Итератор

Шаблон проектирования Iterator обеспечивает способ доступа к элементам совокупного объекта (то есть коллекции) последовательно, не подвергая его базовому представлению. Шаблон Итератора передает ответственность за доступ и перемещение элементов коллекции от самой коллекции к объекту итератора. Итератор определяет интерфейс для доступа к элементам коллекции и отслеживает текущий элемент. Различные итераторы могут выполнять различные политики обхода.

Посредник

Шаблон проектирования Медиатора определяет объект, который инкапсулирует, как взаимодействует набор объектов. Посредник способствует свободному соединению, не допуская прямого доступа объектов друг к другу, и позволяет вам независимо изменять их взаимодействие. Таким образом, эти объекты могут оставаться более многоразовыми. "Объект-посредник" в этом шаблоне централизует сложную логику связи и управления между объектами в системе. Эти объекты сообщают объекту медиатора, когда их состояние изменяется и, в свою очередь, реагирует на запросы объекта-посредника.

Memento

Шаблон Memento захватывает и экстернализирует внутреннее состояние объектов - без нарушения инкапсуляции - так что объект может быть восстановлен в этом состоянии позже. Шаблон Memento сохраняет важное состояние ключевого объекта, внешнего от этого объекта, для поддержания сплоченности.

Наблюдатель

Шаблон проектирования Observer определяет зависимость "один ко многим" между объектами, так что, когда один объект изменяет состояние, все его иждивенцы уведомляются и обновляются автоматически. Образец Observer по существу является моделью публикации и подписки, в которой субъект и его наблюдатели слабо связаны. Связь может осуществляться между наблюдающими и наблюдаемыми объектами, не требуя многого узнать о другой.

Прокси

Шаблон проектирования прокси обеспечивает суррогат или заполнитель для другого объекта, чтобы контролировать доступ к этому другому объекту. Этот шаблон используется для создания репрезентативного или прокси-объекта, который контролирует доступ к другому объекту, который может быть удаленным, дорогостоящим для создания или нуждающимся в обеспечении. Этот узор структурно похож на узор Decorator, но он служит другой цели; Декоратор добавляет поведение к объекту, тогда как Proxy контролирует доступ к объекту.

Регистратор

Шаблон проектирования реселлера решает общую проблему перенаправления события, происходящего в одном контексте выполнения приложения, в другой контекст выполнения для обработки. Это гибридная модель. Хотя он не отображается в книге "Банда четырех", он объединяет элементы шаблонов проектирования Command, Memo и Proxy, описанных в этой книге. Это также вариант шаблона Trampoline (который также не отображается в книге); в этом шаблоне событие первоначально принимается объектом батута, так называемым, потому что оно немедленно отскакивает или перенаправляет событие на целевой объект для обработки.

Синглтон

Шаблон проектирования Singleton гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к нему. Класс отслеживает единственный экземпляр и гарантирует, что никакой другой экземпляр не может быть создан. Одиночные классы подходят для ситуаций, когда для одного объекта имеет смысл обеспечить доступ к глобальному ресурсу.

Шаблонный метод

Шаблон проектирования шаблона шаблона определяет скелет алгоритма в операции, откладывая некоторые шаги к подклассам. Шаблон метода шаблона позволяет подклассам переопределять определенные этапы алгоритма без изменения структуры алгоритмов.

Источник: Cocoa Шаблоны проектирования.

Ответ 2

В приложениях реального мира кодовые базы становятся сложными с течением времени, и вы получаете массивные контроллеры, которые трудно тестировать и поддерживать. Решение состоит в использовании MVVM, что является лучшей альтернативой MVC.

Ответ 3

Использование шаблона MVVM Design в приложении, связанного с вашей бизнес-логикой, который вы будете делать в своем проекте, чтобы отобразить некоторое содержимое в представлении. Для вашего просмотра не требуется больше логики для отображения содержимого, которое вы можете использовать MVC но если вам нужно сделать некоторую бизнес-логику, чтобы отобразить это содержимое на виду, лучшая практика в этом случае состоит в том, чтобы разделить эту логику на другом уровне, чтобы MVVM был лучше в этом случае, ViewModel в MVVM будет содержать эту логику.

На мой взгляд, MVVM лучше MVC на уровне дизайна по этим причинам

  • MVVM совместим с существующей архитектурой MVC.
  • MVVM делает ваши приложения более надежными.
  • MVVM лучше всего работает с механизмом привязки.

Как MVVM совместим с MVC

  • MVC > Модель, просмотр, контроллер
  • MVVM > Модель, View, ViewModel > Модель, (ViewController), ViewModel