Академический Документы
Профессиональный Документы
Культура Документы
автомата в приложениях
Александр Сычев
Разработчик iOS
• Постановка задачи
• Пример
• Другие реализации
• Заключение
Button click
Power On Power Off
Button click
Transition
Mediator Strategy
UIKit independent
// обработка данных
IF (ОШИБКА) {
// обработка ошибки
} ELSE {
// обработка данных
}
• Нечитабелен
• Нечитабелен
• Высокий порог вхождения
• Нечитабелен
• Высокий порог вхождения
• Высокая сложность поддержки и развития
• Нечитабелен
• Высокий порог вхождения
• Высокая сложность поддержки и развития
• Негибкий
Button click
Power On Power Off
Button click
Transition
Received
Waiting Error
NoData
stateMachine.enterState(WaitingDataState)
enterState(WaitingDataState)
…
IF (ОШИБКА) {
enterState(ErrorState)
} ELSE IF (ДАННЫЕ != NULL) {
enterState(DataAvailableState)
} ELSE {
enterState(DataNotAvailableState)
}
Достоинства
• стандартная библиотека
• проста в освоении
• Objective-C / Swift
Недостатки
• доступна с iOS 9.0
• реализации состояний и
переходов тесно связаны
• дубликаты состояний
Библиотека iOS
TBStateMachine 32 5.0
Библиотека iOS
TBStateMachine 32 5.0
• Формализация
• Формализация
• Контроль потоков данных
• Формализация
• Контроль потоков данных
• Единая точка входа для логирования
• Формализация
• Контроль потоков данных
• Единая точка входа для логирования
• История операций
Button click
Power On Power Off
Button click
Transition
@sychevbrain89
Brain89