パターンの種類: ファクトリ パターン
パターンの説明: オブジェクトを動的に作成するために使用される一般的なパターンの 1 つ
適用範囲: 実行時に交換可能な一連のサブクラスから選択する必要がある クラス
注: インターフェイスの実装により、さまざまなサブクラスを同等に扱うことができます。ただし、形式に固執せず、本質を理解してください。
キーポイント: 関数/クラス/サブクラスで構築されたセレクター
本質: セレクターとしての関数の使用
一般的な使用形式:
独立セレクター:
function FactoryMode ( Index){
switch(index){
case "index1" :
return new Class1();break;
case "index2" :
return new Class2();break; 🎜>case "index3":
return new Class3();break;
default:return new ClassComm();break;
}
}
またはクラスのメソッドとして:
var MainClass =function(){};//メインクラス コンストラクター
MainClass.prototype={
FactoryMode:function(){}//サブクラス セレクター
}
または、暗黙的な選択、つまりユーザーの主観的な選択を伴わない選択:
var xmlRequest=function(){
if(this.isOffOnline()){
xhr= new OfflineHandler()
}//ネットワークが利用できない場合今回は、キャッシュ可能な AJAX オブジェクトを作成します
else if(this.isHightLatency()){
xhr= new QueuedHandler();
}//ネットワーク遅延が大きい場合は、キューに入れられた AJAX オブジェクトを作成します
else {
xhr=new SimpleHandler();
}// ネットワークが正常であれば、単純な AJAX オブジェクトを作成します
interface.ensureImplements(xhr,AjaxHandler)
//オブジェクトは、今後の作業をスムーズに進めるためのインターフェイスを実装します。
return xhr
}
拡張子:
ファクトリ パターンの本質はセレクターの適用です。セレクターはオブジェクトとしてだけでなく、関数選択、クラス選択、パラメータ選択としても使用できます。
if(!-[0,]){
return function(elem,type,handler){
elem[type handler.toString()]=handler;
elem.attachEvent("on" type,elem[type handler.toString]); }//if IE
else {
return function(elem,type,handler){
elem.addEventListener(type,handler,false);
}
}
}) ();//複数の判断を避ける
クラス選択:
コードをコピー
コードは次のとおりです。 var prettyClass=function(){ if(一致条件 A) return Class1;
else if(一致条件 B) return
else; return ClassComm;
}
パラメータの選択:
コードをコピーします。
else if()
....//以下同様
}
国.プロトタイプ={};