1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/YouXianMing-iOS-Design-Patterns

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 05:16 2ea7919

MementoPattern

В этом примере представлена полная реализация шаблона проектирования Memento, который позволяет сохранять и восстанавливать внутреннее состояние объекта без нарушения инкапсуляции.

Демонстрация работы шаблона (demo.gif) показывает, как можно сохранить и восстановить состояние объекта.

SingletonPattern

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

В примере используется логика создания и восстановления состояния, которая была абстрагирована в протокол. Также используется центр-хранитель для управления экземпляром.

FlyweightPattern

Это пример полной реализации шаблона проектирования Flyweight, который использует общие объекты для уменьшения использования памяти и обмена информацией между похожими объектами.

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

ChainOfResponsibilityPattern

Этот пример демонстрирует полную реализацию шаблона проектирования Chain of Responsibility, который организует цепочку объектов, где каждый объект может обрабатывать запрос или передавать его дальше по цепочке.

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

VisitorPattern

Пример представляет полную реализацию шаблона проектирования Visitor, который определяет операцию, выполняемую над каждым элементом структуры объекта, без изменения классов элементов.

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

IteratorPattern

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

Итератор позволяет клиентам получать доступ к элементам объекта в определённом порядке, не зная деталей внутренней структуры.

CompositePattern

Здесь показана полная реализация шаблона проектирования Composite, который объединяет объекты в древовидную структуру для представления иерархии «часть-целое».

Композитный шаблон обеспечивает согласованность использования отдельных объектов и составных объектов. Важным аспектом этого шаблона является понимание различий между «частью/целым» и «отдельным объектом/составным объектом».

CommandPattern

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

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

DecoratorPattern

Приведён простой пример реализации декоративного шаблона проектирования.

Какао-фреймворк сам по себе реализует этот шаблон через категорию. Декоративный шаблон добавляет дополнительные обязанности к объекту динамически, что делает его более гибким по сравнению с наследованием.

ProxyPattern

Показана полная реализация прокси-шаблона проектирования.

Прокси-шаблон широко используется, но использование абстрактного базового класса NSProxy для его реализации встречается редко. Пример демонстрирует использование NSProxy для понимания механизма пересылки сообщений.

PrototypePattern

Полная реализация прототипа шаблона проектирования.

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

BridgePattern

Полная реализация мостового шаблона проектирования.

Мостовой шаблон разделяет абстракцию и реализацию, обеспечивая гибкость и независимость изменений в одной части без влияния на другую.

AdapterPattern

Полная реализация адаптера шаблона проектирования.

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

StrategyPattern

Полная реализация стратегического шаблона проектирования.

Стратегия определяет набор алгоритмов для решения задачи и позволяет выбирать подходящий алгоритм во время выполнения. Стратегии могут быть заменены друг на друга без изменения клиентского кода.

AbstractFactoryPattern

Полная реализация абстрактной фабрики.

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

FactoryPattern

К сожалению, в запросе нет информации о реализации фабричного шаблона проектирования (FactoryPattern), поэтому перевод этой части текста невозможен. Простая фабрика: полное внедрение

Простая фабрика: полное внедрение

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

BuilderPattern

Полное внедрение шаблона генератора

Полное внедрение шаблона генератора

  • Шаблон генератора можно рассматривать как фабрику по сборке деталей, он очень похож на фабричный метод!

ObserverPattern

Полная реализация функции подписки на уведомления в шаблоне наблюдателя

Полная реализация функции подписки на уведомления в шаблоне наблюдателя

  • Фреймворк Cocoa сам по себе реализует шаблон наблюдателя (уведомления и KVO).
  • В приведённом примере реализована функция центра уведомлений, особенность которой заключается в том, что нет необходимости удалять объекты, подписавшиеся на уведомления.

FacadePattern

Полное внедрение фасадного шаблона

Полное внедрение фасадного шаблона

  • Когда клиентскому концу требуется использовать сложную подсистему (отношения между подсистемами сложны и запутаны), но он не хочет связываться с ними, необходимо написать отдельный класс для взаимодействия с подсистемой, чтобы изолировать связь между клиентом и подсистемой. Клиент взаимодействует только с этим отдельным классом.
  • Фасадная схема по сути представляет собой набор интерфейсов в системе, предоставляя единый интерфейс. Фасад определяет высокоуровневый интерфейс, упрощающий использование подсистемы.

StatePattern

Пример паттерна состояний в дизайне

MediatorPattern

Полное внедрение посреднического шаблона

Полное внедрение посреднического шаблона

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

TemplatePattern

Полная реализация шаблонного дизайна

В запросе присутствуют ссылки на внешние ресурсы, которые не были включены в ответ.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/YouXianMing-iOS-Design-Patterns.git
git@api.gitlife.ru:oschina-mirror/YouXianMing-iOS-Design-Patterns.git
oschina-mirror
YouXianMing-iOS-Design-Patterns
YouXianMing-iOS-Design-Patterns
master