たとえば、こんな経験はないでしょうか?「引数の多いコンストラクタに間違えて代入してしまって、その後の処理が見当違いのものになってしまった」とか、「毎回同じ順序でメソッドを呼び出してほしいのに、間違えて呼び出された場合の処理が面倒くさい」とか。これらは、確かにプログラマが気をつければいいことでもあるんですが、もう少し安全にクラスを扱うこともできます。こんなときにBuilderパターンが役に立ちます。
まず、Interfaceとして「Builder」インターフェースを準備します。このBuilderインターフェースには、パラメータを設定するための「#setXXX(Object args)」が複数宣言されています。メソッドでObjectクラスを書いていますが、ここはどんなクラスでもかまいません。また、パラメータが設定し終わった後に、生成されたインスタンスを取得するメソッドも宣言します。例えば「#getResult()」といった感じです。
このインターフェースを実装して、具象Builderクラスを作ります。基本的には、生成したいインスタンスにパラメータを設定するだけなんですが、また別に処理を加えてもかまいません。
最後に、この具象Builderクラスを使ってインスタンスを生成すれば大丈夫です。
コメントする