Объект модели

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

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

Model object

Хорошо разработанный класс модели

Класс модели — т.е. класс, производящий объекты модели — обычно является подклассом NSObject или, если Вы используете в своих интересах Базовую технологию Данных, подкласс NSManagedObject. Для создания объекта модели определите его, поскольку Вы были бы основной класс и наблюдать соглашения о присвоении имен Какао. Например, начните имена переменных экземпляра, объявленных свойствами и объявленными методами со строчной буквой, и капитализируйте первую букву встроенных слов.

При реализации подкласса модели необходимо рассмотреть следующие аспекты проекта класса:

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

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

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

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

  • Объектное кодирование. Если Вы ожидаете, что объекты Вашего класса модели будут заархивированы, удостоверьтесь, что класс кодирует и декодирует переменные экземпляра своих объектов.

  • Объектное копирование. Если Вы ожидаете, что клиенты скопируют Ваши объекты модели, Ваш класс должен реализовать объектное копирование.