너무 복잡해지고있는 웹 앱을 작성 중이므로 구성 요소가 어떻게 작동하는지 간략하게 설명하고자합니다. 나는 그들이해야하는 모든 객체에 대해 "알고있는"몇 개의 싱글 톤을 가지고있다.싱글 톤 제거하기?
예를 들어, 존재하는 모든 window
개체의 배열을 보유하고있는 windowSystem
이 있습니다. 모든 창문은 서로에 대해 아무 것도 몰라요. 그러나 closeAllWindows()
함수 또는 if(sameWindowExists()) { return }
유형의 것들과 같은 것들에 대해이 자극적 인 싱글 톤을 가지고 있습니다. (나는 생각합니다.) 모든 종류의 모든 정보를 추적해야합니다. windows
. 프로그램을 시작할 때 하나의 windowSystem
인스턴스를 만듭니다.
더 많은 것을 알고 있기 때문에 불필요하다고 느낍니다. 다른 옵션은 무엇입니까? 편집
: 여기 다양한 _____System
의 생성을 표시하는 코드입니다
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 로직이 사실을 알리는 데 얼마나 오랜 시간이 걸릴 것입니까? - 또 다른 메모에서 귀하의 불만은 이러한 사례가 "필요한 것 이상을 알고 있음"입니다. WindowSystem이 정확히 "여기에 창 인스턴스가 있습니까?"라는 것을 아는 것은 무엇입니까? –
@Karl, @Stephen : 코드를 추가했습니다. '시스템 '간에는 너무 많은 기능들이 앞뒤로 던져져 더 좋은 방법이 될 것이라고 생각합니다. – JustcallmeDrago