|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Объединение методов с одинаковой реализацией
Все привет. Подскажите пожалуйста, как правильней переделать? Никогда не связывался с Интерфейсами. Хотя в моем случае понимаю не совсем даже интерфейсы нужны.
В приложении есть разные окна, которые могут сменять друг друга (одновременно существовать не может несколько окон). Например, окно с приветствием - класс WelcomeScreen, настройками - класс SettingsScreen, информацией о профиле - AccountScreen и т.д. Сейчас в каждом из них есть методы:
Реализация show() и hide() одинакова во всех окнах - следовательно их можно вынести в некий общий класс. Реализация остальных методов различается для разных окон. Как понимаю, можно создать интерфейс, например IWindow - в котором будут перечислены все эти методы. И создать некий шаблонный класс Window, который будет имплементить все эти методы - show() и hide() с реализацией. А остальные методы оставить пустыми - классы наследники будут делать override. package { public interface IWindow { function show():void; function hide():void; function resize():void; function changeLang():void; function destroy():void; } } package { import com.greensock.TweenMax; import com.greensock.easing.Linear; import flash.display.MovieClip; import flash.events.Event; public class Window extends MovieClip implements IWindow { public static const HIDE_COMPLETE:String = 'hideComplete'; public function show():void { TweenMax.to(this, 0.3, {alpha: 1, ease:Linear.easeNone}); } public function hide():void { TweenMax.to(this, 0.5, {alpha: 0, ease:Linear.easeNone, onComplete:onHideTweenFinished}); } private function onHideTweenFinished():void { dispatchEvent(new Event(HIDE_COMPLETE)); } public function changeLang():void {} public function resize():void {} public function destroy():void {} } } Как все таки правильней будет? Либо же вариант 2. В классе Window описать только классы с реализацией - show() и hide(). В интерфейсе IWindow обозначить остальные методы (они будут реализовываться в каждом окне по-своему). И создать некий класс WindowManager, в котором будет метод добавления окна addWindow(win:IWindow) - этот класс будет руководить парадом появления/скрытия окон. И в итоге каждое отдельное окно должно будет наследоваться от Window. А чтобы мог добавляться в WindowManager - должен имплементить IWindow. Или так лучше? Заранее спасибо за помощь в вопросе!
__________________
кто не отвечает, того garbage collector забирает |
Часовой пояс GMT +4, время: 12:57. |
|
« Предыдущая тема | Следующая тема » |
|
|