Builderパターン

たとえばあるインスタンスを作りたい。
そのインスタンスを作ってくれるのはこのクラスだ!
ってのが分かっている時。

例:
たとえばmainクラスの中で、ある『文書』を作りたい。
その『文書』を作ってくれるのは、TextBuilderだったりHTMLBuilderだったりする(作ってくれるクラスは知っている)。
しかしこのTextBuilderやHTMLBuilderの使い方がよくわからない。
そいうときにTextBuilderやHTMLBuilderクラスの使い方を知っている、DerectorクラスにTextBuilderやHTMLBuilderクラスのインスタンスごと投げる。
「Derectorさん、TextBuilder君やHTMLBuilder君の使い方がよくわからないので、あとは任せたよ」
「Derectorさんは彼ら(↑)の使い方を知っているんだよね。じゃぁ後はよろしく頼んだぜ!!」
ってなかんじ。


一方DerectorのほうはTextBuilderクラスやHTMLBuilderクラスのインスタンスを受け取るが、
実際に自分が受け取るクラスが具体的に何クラスのインスタンスかは知らない。
知っているのは受け取るインスタンスはBuilderというクラスから派生したクラスのインスタンスということだけ。
「このBuilderというクラスから派生したクラスなら使い方はみんな同じだからね、任せてもらってOKだよ!」
という感じ。