我寫的Web應用程序太複雜了,我想簡化我的組件如何協同工作。我有幾個單身人士「知道」他們所要做的所有事情。擺脫單身?
例如,我有一個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
--它們創建的),這看起來不太好。
你做什麼像一個窗口管理器的聲音 - 有沒有什麼錯的,但它是一種很難說沒有能夠看到更多的代碼和理解的你的複雜性」重新談論。 – Stephen
好吧,你有這個課程,你剛剛創建了一個實例。爲該類添加邏輯以防止創建更多實例,實際上幫助了您?你有沒有想過創造更多的實例?如果您不小心編寫了代碼來創建另一個實例,Singleton邏輯需要多長時間實際提醒您注意這一事實? - 另一方面,你的抱怨是這些情況「知道的比他們應該的更多」;除了「這裏有一堆Window實例」,WindowSystem究竟知道什麼? –
@Karl,@Stephen:我添加了代碼。 「系統」之間來回傳遞的函數太多,這讓我覺得有一種更好的方法來實現它。 – JustcallmeDrago