NodeJS 디자인 모델 요약[단례 모델, 어댑터 모델, 장식 모델, 관찰자 모델]

3731 단어
본고의 실례는 NodeJS 디자인 모델을 서술하였다.여러분에게 참고하도록 공유하겠습니다. 구체적으로는 다음과 같습니다.
1 . 단일 모드
말하자면 하나의 예는 하나의 클래스가 하나의 실례만 있다는 것을 보장하는 것이다. 실현하는 방법은 먼저 실례가 존재하는지 판단하고 존재하면 직접 되돌아오고 존재하지 않으면 실례 대상을 만들고 실례 대상을 정적 변수에 저장하는 것이다. 다음에 요청할 때 이 대상의 실례를 직접 되돌아갈 수 있다. 그러면 하나의 클래스가 하나의 실례 대상만 있는 것을 확보한다.예를 들어 한 학교가 막 건설되기 시작했는데 아직 도서관이 없다. 어떤 학우들은 지도자에게 "hey! 형제들아, 우리를 도와 도서관을 하나 지을 수 있겠니?"(도서관 실례를 원한다) 그리고 지도자가 말했다. "no 문제야! 잠깐만, 바로 만들어 줄게."(실례가 아직 만들어지지 않았는데 바로 만들어 줄게.)몇 달 후, 도서관이 건설되었다~ 어떤 진기한 학우도 도서관에 가고 싶은데, 그는 지도자에게 "hey! 형제들아, 나 도서관에 가고 싶어. 나 대신 하나 지어주면 안 돼?"라고 요구했다.그러자 지도자가 말했다. "no problem 키야! 저기 하나 지었어. 너 거기 가면 되잖아!"(실례가 존재할 때 이미 만든 실례를 직접 되돌려줍니다)

/*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. 어댑터 모드
한 종류의 인터페이스를 고객이 원하는 다른 인터페이스로 바꾸면 어댑터 모드는 인터페이스가 호환되지 않아 함께 일할 수 없었던 종류를 함께 할 수 있습니다.예를 들어 샤오밍의 아버지인 대명은 소주를 즐겨 마신다. 그러나 술을 마시면 몸을 상하기 때문에 샤오밍은 보면 차마 참을 수 없다. 그래서 그는 방법을 생각했다. 소명병 안의 술을 따르고 끓인 물로 바꾸었다.대명은 그 술병을 보고도 크게 개의치 않고 단숨에'술'을 다 마셔서 기뻐한다.(여기서 대명은 지능이 비교적 낮다고 가정한다.)그러므로 지배기는 남에게 미움을 사지도 않고 자신의 목적을 달성할 수 있는 좋은 방법이다~다음은 구체적인 실현 방법

/*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. 장식 모드
장식 모드는 계승적인 방식으로 하나의 기본 대상을 확장할 수 있다.예를 들어 크리스마스 트리가 처음에는 아무것도 없었어요.그러자 에이미는 나무에 액세서리(원래의 기류를 확장하는 것)를 몇 개 걸었다. 그리고 빌리는 지나가다가 하마터면 큰일 날 뻔했다고 크리스마스 트리를 가져와 (계승)하고 그 위에 다른 액세서리(계속 확장)도 놓았다.

/*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 프로그램 설계에 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기