자바 스크립트 디자인 패턴 – 의 탐험하자

Java Script Design Patterns

자바 스크립트 디자인 패턴

개요: 이 문서에서 우리는 자바 스크립트에서 사용되는 다른 디자인 패턴에 대해 이야기합니다. 개발자 대부분이 프로그램에서 사용되는 실제 또는 이상적 디자인 패턴을 알 수 있을까. 솔직히, 이 질문에 대답 콘크리트 없다 또는 주어진 상황에 사용되는 적절한 디자인 패턴을 발견하는 어떤 방식이 아닌. 그래서 이러한 상황에서, 우리는 그들이 다루는 디자인 패턴 확고한 헐떡 거림 및 특정 문제를 가져야, 우리는 어떤 조건에서 사용할 수있는 디자인 패턴에 대한 결정을하기 위해 더 나은 상황에 있어야.

소개:
디자인 패턴은 소프트웨어 설계 및 개발에서 흔한 다시 발생하는 문제점에 적용 할 수있는 재사용 가능한 해결책. 템플릿 일반적인 문제를 해결하기 위해 사용되는 디자인 패턴도라고 할 수있다. 디자인 패턴은 세 가지 주요 혜택을:

  • 그들은 솔루션을 입증: 디자인 패턴은 소프트웨어 개발 견고한 접근법을 제공하는 입증 된 기법을 사용.
  • 쉽게 재사용 될 수있다: 디자인 패턴 개념이며, 우리의 요구에 맞는 박스 솔루션에서 제공. 이 기능은 디자인 패턴이보다 강력하게하고 유사한 조건에서 다시 사용될 수있다.
  • 패턴 표현입니다: 모든 설계 패턴은 큰 문제에 대한 해결책을 제공하기 위해 사용될 수있는 미리 정의 된 구조와 용어를 제시.

디자인 패턴은 결코 문제에 대한 정확한 솔루션을 제공하지 않습니다. 패턴의 역할 용액 방식을 제공하는 것이 중요하다.

디자인 패턴의 종류
디자인 패턴은 세 개의 하위 범주는 다음으로 나눌 수있다:

  • 창조적 디자인 패턴 : 이 범주에서 다음과 같은 디자인 패턴은 가을 :
    • 하나씩 일어나는 것
    • 건축업자
    • 공장
    • 추상
    • 원기
    • 건축업자
  • 구조 디자인 패턴 : 이 범주에서 다음과 같은 디자인 패턴은 가을 :
    • 장식
    • 정면
    • Flyweight
    • 어댑터
    • 프록시
  • 행동 디자인 패턴 : 이 카테고리에 다음과 같은 디자인 패턴의 가을 :
    • 반복자
    • 방문객
    • 중재인
    • 관찰자

자바 스크립트 패턴:
다음 패턴은 일반적으로 자바 스크립트에서 사용되는:

  • 생성자 패턴
  • 모듈 패턴
  • 싱글 톤 패턴
  • 옵저버 패턴
  • 중재자 패턴
  • 프로토 타입 패턴
  • 명령 패턴
  • 외관 패턴
  • 공장 패턴
  • 데코레이터 패턴
  • 플라이급 패턴

생성자 패턴:
고전적인 객체 지향 프로그래밍 개념에 따라, 생성자는 메모리에서 객체의 인스턴스를 생성하는 데 사용되는 방법의 특별한 유형. 자바 스크립트에서 객체 생성을 사용하여 수행됩니다 다음과 같은 세 가지 방법 중 하나:

Listing 1: 객체를 생성하는 자바 스크립트에 사용되는 세 가지 방법

[Code]

// 접근 1

했다 NewObject를 = {};

//접근 2

VAR NewObject를 = Object.create(제로);

//접근 3

var에 NewObject를 = 새 개체();

[/Code]

제 3 수법에있어서, 개체는 값이 전달되지 또는 설정 개체 생성자를 사용하여 만들어집니다. 새로 생성 된 객체에 값을 설정하는 여러 가지 방법이 있습니다. These are:

Listing 2: 생성자에 값을 설정하는 방법

[Code]

//접근 1

newObject.someKey = "안녕하세요"

//접근 2

NewObject를[someKey] = "안녕하세요"

//접근 3

Object.defineProperty( NewObject를, “someKey”, {

가치 : "안녕하세요"

쓰기 : 참된

열거 : 참된

구성 : 참된

);

[/Code]

The Singleton Pattern:
우리 모두는 싱글 톤 패턴은 하나의 인스턴스 객체의 생성을 제한하는 것을 알고있다. 싱글 톤 패턴은 다른 인스턴스가 존재하지 않는 경우에만 개체의 새 인스턴스를 생성하는 방법으로 클래스를 생성하여 구현된다. 자바 스크립트에서 싱글은 글로벌 네임 스페이스에서 구현을 분리 공유 자원 네임 스페이스의 역할. 자바 스크립트에서, 싱글은 다음의 방식으로 구현:

Listing 3: 자바 스크립트에서 싱글 구현

[Code]

했다 mySingleton = (기능 () {

// 인스턴스는 싱글에 대한 참조를 저장

VAR 인스턴스;

기능 초기화() {

// 하나씩 일어나는 것

// 개인 메소드와 변수

기능 privateMethod(){

CONSOLE.LOG( “나는 개인입니다” );

}

전용 변수했다 = “개인도 임”;

VAR privateRandomNumber = 인 Math.random();

return {

// 공개 방법 및 변수

publicMethod: 기능 () {

CONSOLE.LOG( “대중은 저를 볼 수 있습니다!” );

},

publicProperty: “또한 공용입니다”,

getRandomNumber: 기능() {

privateRandomNumber를 반환;

}

};

};

return {

// 가있는 경우 싱글 톤 인스턴스를 가져옵니다

// 그렇지 않은 경우 또는 하나를 만들

의 getInstance: 기능 () {

면 ( !예 ) {

예를 = 초기화();

}

인스턴스를 반환;

}

};

})();

했다 myBadSingleton = (기능 () {

// 인스턴스는 싱글에 대한 참조를 저장

VAR 인스턴스;

기능 초기화() {

// 하나씩 일어나는 것

VAR privateRandomNumber = 인 Math.random();

return {

getRandomNumber: 기능() {

privateRandomNumber를 반환;

}

};

};

return {

// 항상 새 싱글 인스턴스를 생성

의 getInstance: 기능 () {

예를 = 초기화();

인스턴스를 반환;

}

};

})();

// 용법:

했다 single1 = mySingleton.getInstance();

했다 single2 = mySingleton.getInstance();

CONSOLE.LOG( singleA.getRandomNumber() === singleB.getRandomNumber() ); // 참된

VAR badSingle1 = myBadSingleton.getInstance();

VAR badSingle2 = myBadSingleton.getInstance();

CONSOLE.LOG( badSingleA.getRandomNumber() !== badSingleB.getRandomNumber() ); // 참된

[/Code]

GoF의 당, 싱글은 다음과 같은 상황에 적용 할 수있다:

  • 개체의 인스턴스를 정확히 존재한다.
  • 유일한 인스턴스를 하위 클래스라는 확장해야한다.

The Observer Pattern:
옵저버 패턴, the object (또한 주제로 호출) 그것에 따라 개체의 목록을 유지 옵서버로 언급. 주제는 자동으로 관찰자에 일어난 변화를 통지, 브로드 캐스트 메커니즘을 사용하여. 옵저버 패턴의 구현은 다음과 같습니다.

Listing 4: 피사체가있을 수 있습니다 의존 관찰자의 목록

[Code]

기능 ObserverList(){ this.observerList = [];} ObserverList.prototype.Add = 기능( OBJ ){ this.observerList.push를 반환( OBJ );}; ObserverList.prototype.Empty = 기능(){ this.observerList = [];}; ObserverList.prototype.Count = 기능(){ this.observerList.length를 반환;}; ObserverList.prototype.Get = 기능( index ){ 면( index > -1 && index < this.observerList.length ){ this.observerList를 반환[ index ]; }}; ObserverList.prototype.Insert = 기능( OBJ, index ){ 이었다 포인터 = -1; 면( 인덱스 === 0 ){ this.observerList.unshift( OBJ ); 포인터 = 인덱스; }다른 경우( 인덱스 === this.observerList.length ){ this.observerList.push( OBJ ); 포인터 = 인덱스; } 포인터를 반환;}; ObserverList.prototype.IndexOf = 기능( OBJ, 시작 인덱스 ){ var에 나는 = 시작 인덱스, 포인터 = -1; while( 나는 < this.observerList.length ){ 면( this.observerList[나는] === OBJ ){ 포인터 = 난; } 난 ; } 포인터를 반환;}; ObserverList.prototype.RemoveAt = 기능( index ){ 면( 인덱스 === 0 ){ this.observerList.shift(); }다른 경우( 인덱스 === this.observerList.length -1 ){ this.observerList.pop(); }}; // 확장 extensionfunction와 객체를 확장( extension, OBJ ){ 용 ( 확장에 var에 키 ){ OBJ[key] = 확장[key]; }}

[/Code]

Listing 5: 주제

[Code]

함수 주제(){ this.observers = 새로운 ObserverList();} Subject.prototype.AddObserver = 기능( observer ){ this.observers.Add( observer );}; Subject.prototype.RemoveObserver = 기능( observer ){ this.observers.RemoveAt( this.observers.IndexOf( observer, 0 ) );}; Subject.prototype.Notify = 기능( 문맥 ){ VAR observerCount = this.observers.Count(); 용(var에 나는 = 0; 나는 < observerCount; 난 ){ this.observers.Get(나는).최신 정보( 문맥 ); }};

[/Code]

In the above example, 옵저버 구성 요소를 사용하여, 우리는 지금 정의:

  • 페이지로 새 관찰 체크 박스를 추가하는 버튼
  • 대상 역할을 제어 확인란, 그들은 확인해야 다른 확인란을 통지
  • 새로운 체크 박스의 컨테이너가 추가되는

HTML 코드는 아래에로이다

Listing 5: HTML 코드

[Code]

<버튼 식”addNewObserver”>새 관찰자의 체크 박스를 추가</button><입력 한 id =”mainCheckbox” 유형 =”확인란”/><사업부 아이디 =”observersContainer”></div>

[/Code]

Summary: 그래서이 글에서 나는 자바 스크립트 디자인 패턴에 대한 세부 사항을 논의했다. 디자인 패턴은 객체 지향 언어 자바와 같은 언어의 모든 유형에 적용 할 수 있고 자바 스크립트와 같은 언어를 스크립팅. 그러나이 차이이며, 우리는 위의 예에서 그것을 보았다. 그래서 우리는 디자인 패턴이 일반적으로 문제가 발생하는 솔루션을 제공하는 데 사용됩니다 말할 수있는 논의를 결론. 그리고 디자인 패턴이라는 것을 명심하시기 바랍니다

  • 솔루션을 입증
  • 쉽게 사용할 수 있습니다
  • 표현입니까

당신이 개념을 이해 희망 그것은 당신이 당신의 자신의 프로젝트에서 그것을 구현하는 데 도움이됩니다. 행복한 독서.

JS에 더 재미있는 기사 — 당신은 읽을 수 있어야합니다

Introduction to AngularJS

Foundation for Apps by Zurb

자바 스크립트에 의해 CSS3 속성을 설정하는 방법?

============================================= ============================================== 아마존에서 최고의 Techalpine 책을 구입하십시오,en,전기 기술자 CT 밤나무 전기,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share