이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!