![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+4 06.05.14]
|
И так, как посоветовал expl - создавать общую модель для контроллеров и через нее общаться с видами этих контроллеров - так и поступили. Второй вариант, по факту особо не отличается , поэтому оставили этот.
После окончания создания архитектуры получилась схема : вид1 -> контроллер1 -> модель коммуникации -> контроллер2 - > вид2 ( стрелками обозначено передача событий ). Подход оказался максимально избыточным, ибо как мы видим по стрелкам нам нужно продиспатчить аж 4 события, с одинаковыми именами ( чтоб не путаться ). Почему то никто сразу не предположил, что общение между видами может находится более чем на 1 событии, таких событий может быть уйма. И тогда получается, чтобы передать 1 событие от вида1 до вида2 - нам придется создавать 4 события. Если хотябы 10 обращений = 40 событий - конец читабельности архитектуры , полная неразбериха. Далее я стал анализировать другие возможности приходящие в голову. Например вместо коммуникационной модели, мы могли бы передать в контроллер2 ссылку на вид1 - ну и что? Пускай будет ссылка, по парадигме не запрещено иметь несколько видов под одним контроллером , а у нас даже еще проще - всего лишь ссылка. И тогда мы уменьшаем кол-во событий от 4 до 1. вид1 - > контроллер1 use вид2 ( стрелка передача события ) . Вроде бы вариант очень приятный, но на помостках этого варианта появляется еще один SingleTonBridge . Что это значит - мы создаем ( как было предложено ) - все таки коммуникационную модель . Но создаем ее 1 раз в ините, как синглтон - и далее в каждом виде где это требуется дергая getInstance - легко и непринужденно общаемся между видами. Хочется спросить у вас товарищи, чем плохи эти 2 подхода, или наоборот это лучшее решение. На данный момент я не вижу проблем насчет синглтона , архитектура читабельна , обмен данными в 1 событие, не наршуается парадигма МВС , как отдельно взятого государства ![]()
__________________
Марк Tween |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
использовать pureMVC ради Notifiсations не стоит =)
__________________
low + |
|
|||||
|
[+4 06.05.14]
|
Цитата:
Jewels - а по факту темы, что скажешь ?
__________________
Марк Tween |
|
|||||
|
Цитата:
Что же касается лажы, я не думаю, что лажу бы портировали на большинство самых распространенных языков. Вот когда ваши "самописные велосипеды" постигнет таже участь, тогда я и прислушаюсь к вашему мнению. |
|
|||||
|
[+4 06.05.14]
|
Цитата:
Вот тебе аналогия с пуреМВС - его показали, его раскрутили - им стали пользоваться ( неважно какой процент, но стали). И таких предложений кучи и кучи. Тот же свй адресс - самоу такой написать - не сложно. Возьмите сделайте какую нить свою библу ( неважно какую - любую, желательно конечно ту которой не так много реализаций ) - выложите на гитхаб , и т.п. Пропиарте в хабре , на пару постов в разных соц сетях и форумах - предъявите свое творчество в комментариях . Увидите - уже через 2-3 месяца - люди будут использовать ваш велосипед - и радоваться ))
__________________
Марк Tween |
|
|||||
|
ну что ж с такой позицией остается только пожелать удачи, и успешного, не кривого разрешения вопросов поднятых в этой теме. Конечно же ваш велосипед окажется намного лучше pureMVC да и других фреймворков тоже :-)
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Как по мне, Контроллер нужен только для изменения Модели. Все, что не меняет Модель — является личным зоопарком Вью. Все отдельные Вьюхи, хотят они того или нет, содержатся в главной Вью. Вопрос: при чем тут вообще Контроллер, когда двум детишкам Вью надо пообщаться друг с другом по поводу Отображения?
__________________
Reality.getBounds(this); |
|
|||||
|
[+4 06.05.14]
|
Wolsh вот смотрите
this._globalView.graphicModel = this._graphicModel; this._globalView.define(); this._host.addChild(this._globalView); this._hudController.initialize(this._globalView , this._graphicModel , this._playerModel); this._drumsController.initialize(this._globalView , this._graphicModel ); this._paytableController.initialize(this._globalView , this._graphicModel ); this._linesController.initialize(this._globalView , this._graphicModel ); А как вам такой вариант - сделать общий контроллер и в него загнать ссылки на все виды, которые хотят общаться. И теперь при диспатчинге от одного вида, этот общий контроллер будет делать нужную нам котовасию ?
__________________
Марк Tween |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Нормально, просто перестаем называть его контроллер, и всех делов. Я лично вижу это как часть функционала главной Вью (мне странно что она не знает детей. Я никогда не писал такой архитектуры. Кто же тогда добавляет/убирает этих детей? Страшно подумать, что опять какой-нибудь контроллер).
Цитата:
Меня и раньше насторожили Ваши высказывания "контроллер создает вьюху". Не хотелось холивар разжигать, но в классическом MVC контроллер не обязан даже знать ни о какой вьюхе, то есть может вообще не иметь на нее ссылку, поскольку является не более чем инструментом для общения вьюхи с моделью. Ваши же контроллеры — это ТТУК. p.S. про this'ы я уже высказывался?
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|