ホームページ  >  記事  >  ウェブフロントエンド  >  NodeJSシングルトンモード、アダプターモード、デコレーションモード、オブザーバーモードのまとめ

NodeJSシングルトンモード、アダプターモード、デコレーションモード、オブザーバーモードのまとめ

巴扎黑
巴扎黑オリジナル
2017-09-07 10:25:181560ブラウズ

この記事では、主に NodeJS の設計パターンを紹介し、nodejs のシングルトン モード、アダプター モード、デコレーション モード、オブザーバー モードの概念、原則、具体的な実装テクニックをサンプルの形式で要約および分析します。必要な方は例を参照してください。この記事では

NodeJS の設計パターンについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです。

1. シングルトン モード

その名前が示すように、シングルトンは、クラスがインスタンスを 1 つだけ持つことを最初に決定します。存在する場合は、それを直接返します。存在しない場合は、インスタンス オブジェクトを作成し、そのインスタンス オブジェクトを静的変数に保存します。これにより、次のリクエストが行われたときに、このオブジェクト インスタンスを直接返すことができます。クラスにはインスタンス オブジェクトが 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. 装飾モードを継承できるメソッドを拡張します。基本クラスオブジェクトの機能。たとえば、クリスマスツリーには最初は何もありません。それからエイミーはそれを見て、いくつかの飾りをツリーに掛けました (元の基本クラスを拡張しました) そして、ビリーが通りかかったとき、まだ何かが足りないと感じたので、クリスマス ツリーを引き取り (継承し)、他のものを置きました。装飾が施されています (拡大し続けます)。

/*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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。