2012-11-17 3 views
10

일부 프로젝트에서는 Module Pattern 대신 Singleton Pattern을 사용하고 그 반대도 마찬가지입니다.모듈 패턴과 싱글 톤 패턴이 다른가요?

정확히 알고 싶습니다. Module PatternSingleton Pattern은 무엇이 다른가요?

+4

다음을 확인하십시오. http://addyosmani.com/resources/essentialjsdesignpatterns/book/#designpatternsjavascript – Teemu

+1

@Teemu이 문서는 좋은 문서이지만 그 차이점은 분명하지 않습니다. –

+0

다른 이름이나 구현에 대한 말도 안돼? –

답변

7

Module pattern은 일반적인 메커니즘에 대한 코드의 모듈화를 나타냅니다. 생성자와 프로토 타입 메소드의 다양한 그룹을 독립적으로 정의 할 수 있으므로 여러 파일에 하나의 "클래스"를 분할하는 것이 매우 효과적입니다. 각 모듈은 일반적으로 고정 된 지역 변수를 만들기 위해 클로저 안에 싸여 있습니다. 이것은 모듈 패턴을 나타냅니다.

Singleton pattern은 인스턴스 생성의 제한을 말하며, 종종 lazy initialisation을 사용합니다.

물론 모듈 패턴을 단일 패턴 (Wikipedia article 참조)의 특수화로 간주 할 수 있습니다. 생성자와 프로토 타입 객체는 "단일 인스턴스"의 일부를 차지합니다.

그러나 "단독으로"결합 할 수도 있습니다. 싱글 톤 접근 방식을 사용하는 클래스를 정의하는 모듈입니다.

+2

'모듈 패턴'을 '싱글 톤 패턴'으로 사용하는 것이 맞습니까? –

+1

물론, 어떤 클래스도 전혀 사용하지 않고 하나의 싱글 톤 객체를 생성하는 모듈을 만들 수도 있습니다 (더 프로토 타입적인 접근 방식) – Bergi

+0

@Bergi 저는 이것에 추가 할 질문이 있습니다 : 패턴'Utilities.game_manager = {functionName : function() {var1, var2 ...}, ...};'모듈 패턴처럼 변수를 숨 깁니다 (즉, Utilities.game_manager의 function 속성 안에 변수를 표시하지 않습니다). . 그러면이 모듈 패턴과 다른 점이 있습니까? 내 말은, 모듈 패턴 노출은 숨겨진 변수를 노출 할 수있는 함수를 반환하지만 방금 설명한 패턴으로 수행 할 수 있습니다. – Growler

관련 문제