少し前、私は多くのデザインパター、特にクリエイティブなものを学びました。 しばらくして、私は存在していたが、私はそれを検索しようとしたときに何の参照も見つけられなかった。基本的には、クラスの依存関係を解決するためにクロージャを利用するファクトリの小さな変更です。実際、クラスの工場です。クラスのファクトリは有効なjavascriptパターンですか?
function Factory(depA,depB){
function MyClass(something){
this.something = something;
}
MyClass.prototype.methodA(){ // use depA}
MyClass.prototype.methodB(){ // use depB}
return MyClass
}
ここで、depAはデータベースであり、depBはロガーであるとしましょう。その後、私はクラスが実際にインスタンス化されるかの制御を失うことなく、一般的な依存関係を注入するため、このパターは非常に便利この
var BindedClass = Factory(database,logger);
var instance = new BindedClass(something);
のように工場を使用することができます。
ただし、これにはいくつかの問題があります。たとえば、これがあまり一般的ではないことを私に認識させたことの1つは、JSDocがこの種のパターンをまったくサポートしていないということです。
これは悪いパターンですか?私は、モジュール化のされていない、または動作していないドキュメンテーションツールを除けば、それに不利な点は見つけられません。
'BindedClass'をどこかに保存し、' new BindedClass() 'を何度も呼び出すと、いくつかの意味があると思います。常に2つの行を連続して実行するだけであれば、 'Factory'が引数として' something'を取って普通のオブジェクトを返すようにすることもできます。 – JLRishe
親愛なる@JLRhehe考えは確かにそれを行うことです。いずれにしても、クラスを使用することは、POJOに比べて2つの線を互いに近づけて実行する場合でも、POJOに比べていくつかの利点があります。 – Danielo515