|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Engine.gameStage.stage.addChild(this) лежит в конструкторе this
и на фига метод? |
|
|||||
Цитата:
Правда я считаю что еще лучше когда компонент вью добавляет к себе в дисплей лист по событию от модели об изменении данных.
__________________
... |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
ЧТо бы кто-то еще мог узнать что на сцену добавилась какая-то штуковина. Это бы сцена сообщила если бы могла.
|
|
|||||
strange mood
|
Альтернатива накрытию спрайтом - ловить клики у контейнера приложения в capture-фазе и убивать их, если они идут куда-либо кроме контейнера модельных окон. Делается реально в две строчки (assuming we're inside some ModalWindowManager class):
__________________
тонкий тролль, осеянный благодатью |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Вот такой код ближе к правде.
|
|
|||||
Modus ponens
|
С точки зрения других языков - синглтон в таком контексте - это скорее проблема, а не что-то желаемое. Часто проще добраться до статических свойств, и это упрощает планирование, но, например, мне недавно попалось описание автором проблем написания компилятора для языка Скала. Там он описывает первоначальный дизайн, в которм были статические поля, которые мешали создавать несколько сущностей компилятора одновременно (т.как это были мутабельные объекты - таблица символов генерируемая компилятором и т.п.). Мотивация для того чтобы так не делать, по крайней мере в Яве заключается в том, что несколько экземпляров одного и того же объекта могут быть созданы одновременно и это может значительно ускорить процесс компиляции, если возможно исходники разбить на группы. Кроме того, это так же значило, что компилятор можно было внутри Эклипса создать несколько раз - для проверки синтаксиса, для непосредственно компиляции и не знаю зачем еще - но мало ли.
И потом он еще долго описывает способы решения, и как им в итоге удалось этого избежать. Так вот: скорее всего делать основной класс приложения синглтоном - это плохо, но иногда у этого не будет никаких негативных последствий. Сделав его синглтоном вы ничего не улучшите, но вот ухудшить можно вполне.
__________________
Hell is the possibility of sanity |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Цитата:
Но вот из минусов: 1) Это DRY до тех пор, пока все модальные окна наследуются только от этого, у которого в конструкторе написано то-самое. 2) Это рушит парадигму обязанностей у объектов на уровне того, с чем работаем. Поясню: если есть некоторый ModalManager, который может добавлять IModal – то вся работа заканчивается на реализации интерфейса IModal. Какие кривости использует ModalManager – никого не волнует. А вот "вшивая" его в цепочку наследования – приходится ориентироваться на родительский класс, потому что это не какой-то там IModal, который никому плохо не сделает. Можно говорить о том, что AbstractModalWindow – тоже "пофиг" как работает, мол, работаем же со спрайтом "в черную", но вам же приходится ориентироваться при разработке на него. 3) Если требуется метод очищения всех модальных окон (предположим, их может быть стек) – вообще непонятно, чья обязанность. 4) Для стороннего разработчика – если всеми правдами-неправдами можно подогнать это под single responsobility – то под KISS – никогда. 5) А как насчет модальности не для stage? 6) Реиспользуемость кода – отсутствует. Прямая связанность с каким-то Engine. 7) Для каждого показа модальное окно нужно пересоздавать.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Кто кого куда вшивает и где вы увидели наследование в композиции? Использовать интерфейсы при наследовании запредельно оригинально.
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
А, так у Вас в каждом модальном окне
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 20:12. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|