Я пишу веб-приложение, которое становится слишком сложным, и я хотел бы упростить, как мои компоненты работают вместе.У меня есть несколько синглетонов, которые «знают» обо всех объектах, с которыми они имеют дело.
Например, у меня есть windowSystem
, который содержит массив всех window
существующих объектов.Все окна ничего не знают друг о друге, но у меня есть этот раздражающий синглтон для таких вещей, как closeAllWindows()
функция или if(sameWindowExists()) { return }
-типа, которые (я думаю) требуют какой-то способ отслеживания всехwindows
.Я создаю один windowSystem
экземпляр при запуске моей программы.
Такое ощущение, что они не нужны, потому что они знают больше, чем должны.Какие еще варианты у меня есть?
Редактировать: Вот код, показывающий создание различных _____System
s
var refDate = usDate.now();
var eventSystem = usEventSystem($("#topLevelElement")),
backend = usBackend(eventSystem.trigger),
windowSystem = usWindowSystem($("#windows"), eventSystem.registerEvent),
timelineSystem = usTimelineSystem($("#view"),
backend.getEvents,
usDate.now().shift({ hours:-6 }),
usDate.now().shift({ hours:6 }),
eventSystem.registerEvent,
eventSystem.unregisterEvent,
windowSystem.createWindow);
usWindow.setRegisterEventFunc(eventSystem.registerEvent).setUnregisterEventFunc(eventSystem.unregisterEvent);
Что мне действительно не нравится в этомв том, что я передаю множество функций из других систем друг в друга (и они, в свою очередь, передают их объектам - как window
- они создают), которые, кажется, плохо масштабируются.