Магистерская диссертация тема работы Разработка мобильного приложения детектирования и распознавания текстов на изображениях для платформы ios
Скачать 1.55 Mb.
|
Рисунок 11.– шаблон проектирования MVVM. MVVM является новейшим из MV(X) паттернов, так что можно ожидать, что он создан с учетом всех проблем, присущих MV(X). Очень похож на MVP: • MVVM рассматривает View Controller как View; • в нем нет тесной связи между View и Model. Достоинства MVVM: • распределение: в MVVM View имеет больше обязанностей, чем View из MVP. Потому что первая обновляет свое состояние с View Model за счет установки биндингов (соединением между пользовательским интерфейсом (User Interface) и бизнес-объектом либо другим провайдером данных), тогда как вторая направляет все события в Presenter и не обновляет себя (это делает Presenter); • тестируемость: View Model не знает ничего о представлении, это позволяет нам с легкостью тестировать ее; • простота использования: тот же объем кода, как и для MVP, но в реальном приложении, где вам придется направить все события из View в Presenter и обновлять View вручную, MVVM будет гораздо стройнее (если вы используете биндинги). 4) VIPER VIPER – это паттерн для разработки приложений под iOS с «Чистой архитектурой». «Чистая архитектура» разделяет логическую структуру приложения на отдельные уровни ответственности. Это упрощает выделение зависимостей (например, вашей базы данных) и проверку взаимодействий на границах между слоями. Основными частями VIPER являются: • View отображает то, что он сообщает Presenter, и возвращает пользовательский ввод обратно в Presenter. • Interactor содержит бизнес-логику, связанную с данными (Entities): например, создание новых экземпляров сущностей или получение их с сервера. Для этих целей вы будете использовать некоторые Сервисы и Менеджеры, которые рассматриваются скорее как внешние зависимости, а не как часть модуля VIPER. • Presenter содержит бизнес-логику, связанную c UI (но UIKit- независимую), вызывает методы в Interactor. • Entities – простые объекты данных, не являются слоем доступа к данным, потому что это ответственность слоя Interactor. • Router несет ответственность за переходы между VIPER- модулями. Рисунок 12.– шаблон проектирования VIPER. Если сравнить VIPER с паттернами MV(X)-вида, то можно увидеть несколько отличий в распределении обязанностей: • логика из Model (взаимодействие данных) смещается в Interactor, а также есть Entities — структуры данных, которые ничего не делают; • обязанности представления UI переехали в Presenter, но без возможности изменения данных; • VIPER является первым шаблоном, который пробует решить проблему навигации, используется Router. Достоинства: • Распределение. Несомненно, VIPER является лучшим в распределении обязанностей. • Тестируемость. лучше распределение — лучше тестируемость. Недостатки: • Простота использования. Очевидно, что первые два преимущества идут за счет стоимости сопровождения. Необходимо будет писать огромное количество интерфейсов для классов с незначительными обязанностями. Исходя из выше описанного VIPER является наилучшим вариантом для проектирования приложения под iOS, но есть один существенный недостаток: необходимость писать огромное количество кода. На данный момент у данной проблемы есть решение: использование кодогенератора. CocoaPods CocoaPods – это мощное и одновременно изящное средство управления зависимостями Cocoa-библиотек, которые разработчики используют в своих iOS и MacOS X проектах. iOS-разработчики часто используют наработки других разработчиков. И как правило, библиотеки поставляются с исходным кодом. Обычно добавляется исходный код библиотек в проект, однажды взяв его из репозитория. Однако у такого подхода есть несколько недостатков: 1) Бывает сложно уследить за версиями библиотек и их связями между собой; 2) Нет одного общего места, где можно просмотреть список всех доступных библиотек; 3) Необходимо всегда помнить про то, что исходных код таких библиотек нужно обновлять; 4) Когда скачиваете исходники и добавляете в свой проект часто возникает желание изменить код библиотеки локально, что в будущем создать головную боль при обновлении библиотеки; Средства управлением зависимостями CocoaPods поможет решить многие упомянутые проблемы. CocoaPods разберется с зависимостями между библиотеками, которые вы используете, скачает их, создаст и будет поддерживать структуру проекта в надлежащем виде. CocoaPods однозначно можно отнести к обязательным средствам в арсенале iOS-разработчика. В заключении хочется отметить, что этап выбора языка, среды разработки и архитектуры является очень важным. Так как он определяет, как в дальнейшем будет проходить разработка и с какими сложностями столкнется разработчик. Кроме того, очень важно использовать самые удобные и современные средства для разработки, которые позволят значительно упростить разработку. В следующей главе будет описаны те особенности языка и архитектуры, которые были выбраны для разработки приложения. |