NodeJS 싱글톤 모드, 어댑터 모드, 데코레이션 모드, 관찰자 ​​모드 요약

巴扎黑
풀어 주다: 2017-09-07 10:25:18
원래의
1535명이 탐색했습니다.

이 글은 주로 NodeJS 디자인 패턴을 소개하고, nodejs 싱글턴 모드, 어댑터 모드, 데코레이션 모드, 옵저버 모드의 개념과 원리, 구체적인 구현 기법을 예제 형식으로 요약하고 분석한 것입니다. 이 기사에서는

NodeJS 디자인 패턴을 설명합니다. 참고를 위해 모든 사람과 공유합니다. 세부 사항은 다음과 같습니다.

1. 싱글톤 모드

이름에서 알 수 있듯이 싱글톤은 클래스에 인스턴스가 하나만 있는지 확인하는 것입니다. 구현 방법은 먼저 인스턴스가 있는지 확인하는 것입니다. 존재하는 경우 직접 반환합니다. 존재하지 않는 경우 인스턴스 개체를 만들고 다음 요청 시 이 개체 인스턴스를 직접 반환할 수 있습니다. 클래스에는 인스턴스 객체가 하나만 있습니다. 예를 들어, 학교가 막 지어졌는데 아직 도서관이 없습니다. 어떤 학생들이 리더에게 "형님, 도서관 짓는 것을 도와주실 수 있나요?"라고 물었고, 리더는 이렇게 말했습니다. : "문제없어요! 기다리시면 바로 구축해 드리겠습니다." (인스턴스가 아직 생성되지 않았으므로 생성하세요.) 몇 달 후, 도서관이 지어졌습니다. 이상한 친구도 도서관에 가고 싶어했지만 리더에게 이렇게 요청했습니다. "야, 나 도서관에 가고 싶어. 도와줄 수 있니?" 하나 만들어?" 그러자 리더가 말했다: "저쪽에 이미 하나 만들어졌는데 그냥 거기로 가면 안 돼요!" (인스턴스가 이미 존재하면 생성된 인스턴스가 바로 반환됩니다.)


/*singleInstance.js*/
var _instance = null;//定义初始化_instance
module.exports = function(time){
   function Car(time){
     this.time = time;
   }
   this.getInstance = function(){
     if(_instance != null){
       return _instance;
     }else{
       return new Car(time);
     }
   }
}
로그인 후 복사

2 . 어댑터 패턴

클래스의 인터페이스를 고객이 원하는 다른 인터페이스로 변환하면, 원래 인터페이스가 호환되지 않아 함께 작동할 수 없었던 클래스도 함께 작동할 수 있도록 해주는 어댑터 패턴입니다. 예를 들면~ 샤오밍의 아버지 대밍은 술을 좋아하는데 술을 마시는 것이 몸에 해롭다는 걸 보고 참지 못해 술병에 담긴 술을 따라 붓는다. 끓인 물(무거운 물)로 교체하세요. Daming은 그것이 여전히 동일한 와인병인 것을 보고 별로 신경을 쓰지 않고(인터페이스는 변하지 않았고 내용만 변경됨) 단숨에 "와인"을 마셨고 매우 기뻤습니다~ (여기서는 Da Ming의 IQ가 낮다고 가정합니다...). 따라서 컨트롤러는 다른 사람에게 불쾌감을 주지 않으면서 자신의 목표를 달성할 수 있는 좋은 방법입니다. 구체적인 구현 방법은 다음과 같습니다


/*target.js*/
module.exports = function(){
  this.request = function(){//原接口
    console.log('Target::request');
  }
}
로그인 후 복사


/*adapter.js*/
var util = require('util');
var Target = require('./target.js');
var Adaptee = require('./adaptee.js');
function Adapter(){
  Target.call(this);
  this.request = function(){//重写原接口
    var adapteeObj = new Adaptee();//重写的内容
    adapteeObj.specialRequest();
  }
}
util.inherits(Adapter, Target);//通过继承原模块, 获得原接口
module.exports = Adapter;
로그인 후 복사

3. 장식 모드

장식 모드를 상속받을 수 있는 방법입니다. 기본 클래스 개체에 대한 기능입니다. 예를 들어, 크리스마스 트리에는 처음에는 아무것도 없습니다. 그런 다음 Amy는 그것을 보고 나무에 몇 개의 장식품을 걸었습니다(원래 기본 클래스를 확장함). 그리고 Billy가 지나갔을 때 여전히 뭔가 부족하다고 느꼈기 때문에 크리스마스 트리를 가져간 다음(상속) 다른 장식품을 두었습니다. 그것에 장식품 (계속 확장).


/*Base.js*/
module.exports = function(){
  this.dosomething = function(){
   console.log("Nice to meet u.");
  }
}
로그인 후 복사


/*Decorator.js*/
var util = require("util);
var Base = require('./Base');
function Decorator(){
  Base.call(this);
  this.dosomething = function(){
     Base.dosomething();
     console.log('I am a decorator');//拓展内容
  }
}
util.inherits(Decorator, Base);//继承
module.exports = Decorator;
로그인 후 복사

4. 관찰자 패턴

관찰자 패턴이란? 예를 들어 같은 반 친구인 퍼피와 곰은 같은 시간에 같은 반의 귀여운 토끼와 사랑에 빠졌습니다. 강아지와 곰은 토끼의 모든 움직임에 주의를 기울일 것입니다. 토끼가 움직일 때만 둘 다 알게 됩니다. 상대적으로 말하면, 강아지와 곰은 토끼의 '관찰자'이고 토끼는 '관찰자'입니다. ". 관찰 대상". 더 중요한 것은 토끼의 움직임(특정 기능)이 관찰자 강아지와 곰에게 동시에 통보하여 해당 피드백도 제공한다는 것입니다(각각의 콜백 기능)


/*被观察者*/
module.exports = function(){
  var m_obserSet = [];//观察者列表
  var _self = this;
  this.addObser = function(observer){
    m_obserSet.push(observer);//添加观察者
  }
  this.doAction = function(){
    console.log("Observable do some action");
    _self.notifyAllObeser();
  }
  this.notifyAllObeser = function(){//发生动作
    for(var key in m_obserSet){//逐个通知观察者
      m_obserSet[key].update();//观察者执行回调
    }
  }
}
로그인 후 복사

위 내용은 NodeJS 싱글톤 모드, 어댑터 모드, 데코레이션 모드, 관찰자 ​​모드 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!