2016-03-21 11 views
-3

私は約9年のJS経験を持つ私の友人と話していました。彼はコード問題で私を助けていて、クロージャーとjavascript工場について話しました。私は前にその言葉を聞いたことがなく、 "工場"がjavascriptのコミュニティ/言語のものであるかどうか疑問に思っていましたか?もしそうなら、誰かがそれを私に説明してもらえますか?Javascript:工場とは何ですか?

私はクロージャが何であるか知っていますが、彼によれば、 "工場"は言語を学ぶ次のレベルです。 Wikipediaから

+1

[ファクトリパターン(https://addyosmani.com/resources/essentialjsdesignpatterns/book/#factorypatternjavascript) "プログラミング工場" の – Tushar

+0

グーグル。 –

+1

https://en.wikipedia.org/wiki/Factory_(object-oriented_programming) –

答えて

1

:クラスベースで

は、ファクトリメソッドパターンの正確なクラスを指定しなくても オブジェクトを作成する問題に対処するためにファクトリメソッドを使用して生成に関する パターンでありますオブジェクト が作成されます。これは、コンストラクタを呼び出すのではなく、 ファクトリ(インターフェイスで指定され、子クラス クラスによって実装されるか、ベースクラスで実装され、場合によっては 派生クラスによってオーバーライドされる)を呼び出すことによってオブジェクトを作成することによって行われます。 Learning JavaScript Design Patternsから

Factoryパターンは、オブジェクトを作成する 概念に関する別の生成に関するパターンです。そのカテゴリ内の他のパタ​​ーン と異なる点は、 コンストラクタを明示的に使用する必要がないことです。代わりに、ファクトリは オブジェクトを作成するための汎用インターフェイスを提供できます。ここでは、 を作成するファクトリオブジェクトのタイプを指定できます。

UIコンポーネントのタイプ を作成するように求められるUIファクトリーがあるとします。 新しい演算子を使用するか、別の作成コンストラクタを使用して直接このコンポーネントを作成するのではなく、新しいコンポーネントの代わりに ファクトリオブジェクトを要求します。ファクトリに、 オブジェクトのタイプ(たとえば、 "Button"、 "Panel")が必要であることをファクトリに通知し、 をインスタンス化して使用するために返します。

これは、オブジェクト作成プロセスが で比較的複雑な場合に特に便利です。ダイナミックファクタまたはアプリケーション構成に強く依存する場合は アプリケーション構成。

このパターンの例は、ExtJS などのUIライブラリにあります。オブジェクトまたはコンポーネントを作成する方法は、サブクラス化された です。

例:

var Brand = { 
    Daihatsu : function(type) { 
     this.type = type; 
    }, 
    Honda : function(type) { 
     this.type = type; 
    }, 
    Toyota : function(type) { 
     this.type = type; 
    } 
}; 

var Car = { 
    factory : function(brand, type) { 
     return new Brand[brand](type); 
    } 
}; 

var cars = [ 
    Car.factory('Honda', 'Civic'), 
    Car.factory('Toyota', 'AYGO'), 
    Car.factory('Daihatsu', 'Consorte'), 
    Car.factory('Toyota', 'Carina') 
]; 
+0

を参照してください。私はあなたが一般的に 'new'を工場のパターン。 – saadq