Javascript設計モード(三)--抽象工場モード
2516 ワード
≪抽象ファクトリ・モード|抽象ファクトリ・モード|抽象ファクトリ・モード|抽象化ファクトリ・モード|emdw≫:クラスのインスタンスを作成するのではなく、クラスのファクトリを抽象化して製品クラスタの作成にビジネスを使用します.
上のコードではtestクラスは何もできず、作成時に属性がなく、プロトタイプ上のメソッドも使用できません.しかし、継承には、1つの種類を定義し、そのメソッドを定義しているため、サブクラスでメソッドを書き換えると、エラーは発生しません.
しかし、必要なメソッドが親から継承され、実装を具体的に書き直さない場合、インスタンス化オブジェクトは親のメソッドを呼び出します.親クラスにヒントがあれば、とても役に立ちます.これが抽象クラスの役割です.
抽象ファクトリは、実は子クラスが親クラスを継承する方法であり、この方法では子クラスと親クラス(抽象クラス)を継承する名前を伝達し、抽象ファクトリメソッドでは抽象クラスの存在性を判断し、存在する場合は親クラスを継承する方法を追加します.
注意:移行クラスのプロトタイプを継承する場合は、親のプロトタイプを継承するのではなく、newキーで親のインスタンスをコピーします.親のプロトタイプメソッドだけでなく、親のオブジェクトプロパティも継承するためです.
継承された使用を示すテスト例
抽象ファクトリモードは設計モードの中で最も抽象的なものであり、唯一の抽象化作成モードでもある.作成されたのは、単純なファクトリモードで単一のオブジェクトを作成するのとは異なり、ファクトリメソッドモードで複数のオブジェクトを作成するクラスクラスタです.Javascriptは抽象化作成と仮想メソッドをサポートしていないため、あまり広く応用されていません.
抽象クラス
// ,
var test = function(){};
test.prototype = {
getFirst:function(){
return new Error(' ');
},
getSecond:function(){
return new Error(' !');
}
};
上のコードではtestクラスは何もできず、作成時に属性がなく、プロトタイプ上のメソッドも使用できません.しかし、継承には、1つの種類を定義し、そのメソッドを定義しているため、サブクラスでメソッドを書き換えると、エラーは発生しません.
しかし、必要なメソッドが親から継承され、実装を具体的に書き直さない場合、インスタンス化オブジェクトは親のメソッドを呼び出します.親クラスにヒントがあれば、とても役に立ちます.これが抽象クラスの役割です.
抽象ファクトリモード
var myTest = function(subType,superType){
//
if(typeof myTest[superType] === 'function'){
//
function F(){};
//
F.prototype = new myTest[superType]();
// constructor
subType.constructor = subType;
// “ ”
subType.prototype = new F();
}else{
//
throw new Error(" !!!");
}
}
myTest.first = function(){
this.type = 'first';
};
myTest.first.prototype = {
getFirst:function(){
return new Error(' ');
},
getSecond:function(){
return new Error(' !');
}
};
myTest.second = function(){
this.type = 'second';
};
myTest.second.prototype = {
getFirst:function(){
return new Error(' ');
},
getSecond:function(){
return new Error(' !');
}
};
抽象ファクトリは、実は子クラスが親クラスを継承する方法であり、この方法では子クラスと親クラス(抽象クラス)を継承する名前を伝達し、抽象ファクトリメソッドでは抽象クラスの存在性を判断し、存在する場合は親クラスを継承する方法を追加します.
注意:移行クラスのプロトタイプを継承する場合は、親のプロトタイプを継承するのではなく、newキーで親のインスタンスをコピーします.親のプロトタイプメソッドだけでなく、親のオブジェクトプロパティも継承するためです.
インプリメンテーション
継承された使用を示すテスト例
//
var firstTest = function(firstParameter,secondParameter){
this.firstParameter = firstParameter;
this.secondParameter = secondParameter;
};
// test
myTest(firstTest,'test');
firstTest.prototype.getFirst = function(){
return this.firstParameter;
}
firstTest.prototype.getSecond = function(){
return this.secondParameter;
}
まとめ
抽象ファクトリモードは設計モードの中で最も抽象的なものであり、唯一の抽象化作成モードでもある.作成されたのは、単純なファクトリモードで単一のオブジェクトを作成するのとは異なり、ファクトリメソッドモードで複数のオブジェクトを作成するクラスクラスタです.Javascriptは抽象化作成と仮想メソッドをサポートしていないため、あまり広く応用されていません.