Объект модели
Объект модели является типом объекта, содержащего данные приложения, обеспечивающего доступ к тем данным и реализующего логику для управления данными. Объекты модели играют одну из этих трех ролей, определенных шаблоном разработки Контроллера представления Модели. (Другие две роли играют объекты контроллера и представление.) Любые данные, которые являются частью постоянного состояния приложения (ли то постоянное состояние сохранено в файлах или базах данных) должны находиться в объектах модели после того, как данные загружаются в приложение.
Поскольку объекты модели представляют знания и опыт, связанные с определенной проблемной областью, они могут быть снова использованы, когда та проблемная область имеет силу. Идеально, объект модели не должен иметь никакого явного соединения с объектами представления, представляющими его данные и позволяющими пользователям редактировать те данные — другими словами, это не должно касаться проблем представления и пользовательского интерфейса.
Хорошо разработанный класс модели
Класс модели — т.е. класс, производящий объекты модели — обычно является подклассом NSObject
или, если Вы используете в своих интересах Базовую технологию Данных, подкласс NSManagedObject
. Для создания объекта модели определите его, поскольку Вы были бы основной класс и наблюдать соглашения о присвоении имен Какао. Например, начните имена переменных экземпляра, объявленных свойствами и объявленными методами со строчной буквой, и капитализируйте первую букву встроенных слов.
При реализации подкласса модели необходимо рассмотреть следующие аспекты проекта класса:
Переменные экземпляра. Вы объявляете, что переменные экземпляра содержат инкапсулированные данные приложения. Переменные экземпляра могут быть объектами, скалярными значениями или структурами такой как
NSRange
. Существуют компромиссы к использованию объекта по сравнению с необъектными типами, и объектная переменчивость является рассмотрением.Методы доступа и объявленные свойства. Методы доступа и объявленные свойства обеспечивают способы сохранить инкапсуляцию, потому что они добиваются доступа к данным экземпляра объекта. Методы доступа обычно получают и устанавливают значения переменных экземпляра (и в разговорной речи известны как методы получателя и методы установщика). Заявленные свойства являются удобством уровня языка, которые позволяют времени выполнения синтезировать методы доступа для класса. Важная роль методов доступа и объявленных свойств должна управлять объектной памятью. Поэтому там рекомендуются формы для реализации методов получателя и методов установщика.
Кодирование значения ключа. Кодирование значения ключа является механизмом, позволяющим клиентам получить доступ к свойству объекта с помощью имени свойства в качестве ключа. Это используется Базовыми Данными и в другом месте в Какао. Именование методов доступа (и, неявно, объявленный свойствами) является фактором в этом механизме.
Инициализация и освобождение. В большинстве случаев класс модели реализует метод инициализатора для установки его переменных экземпляра в разумные начальные значения. Это должно следовать за стандартной формой для методов инициализатора. Это должно также гарантировать, что выпускает любые переменные экземпляра, сдерживающие объект, оценивает
dealloc
метод.Объектное кодирование. Если Вы ожидаете, что объекты Вашего класса модели будут заархивированы, удостоверьтесь, что класс кодирует и декодирует переменные экземпляра своих объектов.
Объектное копирование. Если Вы ожидаете, что клиенты скопируют Ваши объекты модели, Ваш класс должен реализовать объектное копирование.