Презентация на русском языке о структурных паттернах проектирования, с большим количеством собственных уникальных идей, заметок и сравнений. Старые концепции на новый лад
12. •
•
Способ решения :
Spoiler:
Я выделил 2 различных типа Моста :
Мост по типу : Абстракция -> Реализация
Мост по типу : Публичная абстракция -> Приватная абстракция
MARK: Второй вариант - более общий и гибкий случай, но применимый
только в самых “запущеных” вариантах!
13. Абстракция -> Реализация :
Конкретная технология
моста
Реализация 1
Реализация 2
Реализация 3
Единая абстракция
Базовый класс семейства приватных объектов
Публичная абстракция (Window на экране)
Конкретный интерфейс абстракции
Базовый/Абстрактный класс
Конкретный подкласс
Публичная абстракция -> Приватная абстракция :
Приватная абстракция (Window на экране iPhone)
Конкретный интерфейс абстракции
Реализация конкретного подкласса в семействе
<WindowProtocol>
Window
AlertWindow
<iOSWindowProtocol>
iOSWindow / tvOSWindow / AndroidWindow
iOSAlertWindow
Конкретная
технология
моста
Window
AlertWindow
OverlayWindow
View
14. •
Особенности моста :
•
•
Примеры плохих интерфейсов :
•
•
•
MARK: С помощью протоколов это можно обойти :
такие методы можно объявлять, как optional
(необязательная имплементация)
•
•
24. •
•
•
•
•
Использование параллельности
MARK: Для крупных параллельных подсистем -
выгодно использовать кодогенераторы.
Generamba for Example
MARK: Для создания юнитов(модулей) параллельных подсистем
хорошо используется Абстрактная фабрика
49. Технологии для проксирования в obj-c
•
•
•
• void NSInvocation
Можно изменить вызов, подделать любой параметр, выполнить произвольный код,
в т.ч. перенаправить Invocation на другой объект, и даже подменить селектор!
Срабатывает в том случае, если метод не был найден ни в классе, ни в одном из суперклассов
• id SEL
Достаточный метод для простого перенаправления на подходящий таргет
(реальный объект. ). Срабатывает, если в классе и суперклассах не реализован
метод по заданному селектору. Можно указать таргет, у которого поискать селектор