10/08/30 07:31:51 pptN1p2m
>>418
ふむ、そういう実装でしたか。少し想像と違いました。そういう時はBuilderパターンの変化球ですかね。
>機能を別クラスとして作成して処理を委ねるのが委譲
委譲についてはこの通りです。
別クラスにするのでHogeHogeする側がHogeHogeされる側について詳細を知る必要がなくなり、
かつ、継承と委譲は相互に置き換え可能です。
んでBuilderパターンですが組み立てる側と組み立てる流れを管理する側に分けて最終的に"製品"をreturnします。
Builder
getInstance(discriminator):Builder
buildPart1()
...
buildPartN()
...
getProduct():Product
Director
build(builder:Builder):Product
これがBuilderパターンの基本です。
Builder.getInstance(discriminator)はpublic staticなファクトリメソッドです。
これで取得したインスタンスをDirector.build(builder:Builder)にわたしDirectorは結果であるProductを返します。
DirectorはbuildメソッドでBuilderの各メソッドを適切に呼び出します。
それらメソッドのアクセスはBuilder(又はそのサブクラス)とDirectorのみにします。