2011-09-13 5 views
1

私はデザインパターンの初心者です。
私はクラスのインスタンスを作成したいと思います。例えば、ClassAとし、そのフィールドのいくつかを設定ファイルから読み込んだ値に設定したいとします。
ファイルの値を管理するコードとクラスのコードを区別しておくと、ClassAは純粋な「ビジネスロジック」クラスになります。

ファイルからクラスをロードするクラスを初期化します。それは建築家ですか?

class ClassA { 
    boolean config1; 
    String originDB; 
    String destDB; 
    //other fields not initialized at the construction time 
    } 

    class ClassAFactory { 
    boolean config1; 
    String originDB; 
    String destDB;   

    public ClassAFactory { 
     //constructor of the class factory 
     //load config values from file 
    } 

    public ClassA newInstance() { 
    //create a new instance of ClassA and config fields config1, originDB, destDB 
    } 

    } 

私はビルダーがあまりにも「インスタンス化するだけでなく、」しかし、初期の世話をするようですので、これはBuilderパターンであると言うでしょう。
それ以外の場合、ビルダーは作成プロセスを段階的に中断することに重点を置いているように見えますが、私の場合は1つの段階(ただし複合段階)しかありません。

ビルダーパターンと考えられますか?それとも違うの?

+1

はちょうど私の工場のように見えるん... –

答えて

1

ビルダーよりもファクトリパターンに似ています。これは、すべての作業を行うメソッドが1つしかないためです。一般的に、ビルダーは、構築されるオブジェクトのカスタマイズを可能にするセッタースタイルのメソッドを備えています。

+0

Factory Methodパターンがあると思われるので、私は、あまりにも工場出荷時のパターンに考えて、私は混乱してきましたインターフェイスの異なる具体的な実装からの絶縁に焦点を当てました。私にはないすべてのものがあります。 – AgostinoX

+1

以下の@ gnatのコメントは素晴らしい説明です。 –

2

手順ません - 何Builder

ClassA a = ClassABuilder 
      .config(config1) 
      .originDB(originDB) 
      .destDB(destDB) 
      .build(); 
    // above reads a Builder to me and hopefully to any reader 
    // note above allows to swap, add, remove particular steps 


    ClassA a = ClassAFactory.newInstance(); 
    // above reads Factory to me and hopefully to any reader 
    // note for reader, it's a one-step thing 
+0

また、ビルダーは通常、オブジェクトのグラフを作成します。例えば。ヘッダー、フッター、タイトル、いくつかの段落を考慮した文書。良い例:+1 –

関連する問題