Показать сообщение отдельно
Старый 11.06.2012, 01:06
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 10  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
View помещает на сцену DO в зависимости от типа объектов в World Т.е. нужно как то отличать мяч от коробки и подгружать для каждого объекта соответствующее ему изображение. Может ли кто нибудь предложить, что нибудь кроме свойств-идентификаторов у объектов и switch в отображении?
Я когда давно делал редактор мебели еще на as2 решил сильно не заморачиваться и впихнуть фабрику вьюшек в модель, это выглядело бы в as3 так:
Код AS3:
public class ConcreteItem extends ItemBase
{
    ....
    override public function newView():ViewBase
    {
         return new ConcreteView(this);
     }
 
    override public funtion getIsoView():IsoViewBase
    {
         return new ConcreteIsoView(this);
    }
}
Спрашивается: зачем тогда вообще разделять модель и вид? - А у меня 2 вида было - один изометрический - другой - вид сверху. Чтобы логику не копипастить и в 2-х местах не обновлять.
А ведь один вид может сейчас быть - а в другой не быть - т.е. не получается на виде данные хранить (и на каком из 2-х? - они оба исчезают периодически).
Да и разобраться в логике, не обременённой видом проще.

Хотя, конечно, в классическом MVC модель ничего не должна знать о виде. Но, это практика - какой подход оптимален - тот и надо использовать, а не думать как там правильно блогеры советуют (они сами могут много об абстракции рассуждать, а строчить код, на 50% состоящий из синглтонов - рассказывать то всякое можно )

Если фабрику/тип объекта в логику не пихать, то альтернативой свитчу может быть карта/хеш-таблица "тип модели" - "фабрика вьюшки/тип вьюшки"
Впринципе, можно и свитчём - главное, чобы он в одном месте был, а не 10 похожих по всему коду (Если его удастся сделать одним - то в принципе получится то же самое, что и с хеш-таблицой)

P.S. Стало интересно код посмотреть - а то на словах можно такого насоветовать


Последний раз редактировалось expl; 11.06.2012 в 01:23.