Prototype Oriented View Model
Прототипное программирование используется в динамических языках. В частности в JavaScript.
Особенность данной модели программирования в отстутсвии классов как модификаторов типа. Тип обьекта задается исключительно его прототипом. В конечном итоге все обьекты системы можно представить в виде дерева обьектов.
В классическом обьектно ориентированном тоже можно, но там узлами будут классы, а тут обьекты.
Так чем же может быть полезен такой подход?
Очевидным мне кажется его применение в иерархии UIView. Существуюющую систему типов менять нет смысла, достаточно ее дополнить.
Обьекты должны порождаться от прототипов.
У обьекта есть только 1 прототип.
По умолчанию все свойства обьекта беруться от прототипа.
Наследник может перекрывать свойства прототипа.
Каждый обьект представляется как суперпозиция прототипа и измененных свойств.
Что дают нам эти свойства? Они позволят проще выводить повторяемые елементы, и проще шаблонизировать вид.
Например, Вы создаете объект UILabel задаете ему цвет, шрифт и выравнивание. Далее порождаете от этого обьекта другой обьект. И новый обьект обладает теми же параметрами что и прототип!
Далее веселее, при изменении прототипа все наследники изменятся автоматически! За это надо отдельно сказать спасибо KVO и ReactiveCocoa.
Если наследник изменит какое то свойство, оно перекроет свойство прототипа, и не изменения прототипа не будут влять.
Следовательно, значением свойства будет ближайшая по прототипной цепочке значимая величина.