Javascriptパターン設計ファクトリーパターン学習体験_jsオブジェクト指向

WBOY
リリース: 2016-05-16 18:28:37
オリジナル
1006 人が閲覧しました

パターンの種類: ファクトリ パターン

パターンの説明: オブジェクトを動的に作成するために使用される一般的なパターンの 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
}

拡張子:

ファクトリ パターンの本質はセレクターの適用です。セレクターはオブジェクトとしてだけでなく、関数選択、クラス選択、パラメータ選択としても使用できます。



など。コードをコピーします コードは次のとおりです: var addEvent=(function(){
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;
}


パラメータの選択:




コードをコピーします。
function Country(country){ if(country=="中国") this.config={};//基本パラメータ 1 を設定します else if(contry=="アメリカ") this.config={};//パラメータ 2 を設定します
else if()
....//以下同様
}
国.プロトタイプ={};

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート