BookmarkLINEBuilderパターンはオブジェクトの生成方法に関する処理モデルです。オブジェクト生成の流れを抽象化する(生成の手順や手段を切り離す)事で、オブジェクトの生成を柔軟にします。う素材がそれぞれ独立しています。監督(ディレクター)が、職人(ビルダー)と扱う素材の2つを以て家具の制作指示を出す事で、職人はせっせとその素材を加工し、返します。この時、職人は今作っている家具がどこの家のどの部屋のものなのかを知りませんし、知る必要がありません。この疎結合な関係は、変更(差し替えなど)も影響範囲が少なく容易に行う事が出来ます。簡単な話、Builderパターンを実装すると、処理の流れを変えずに職人と素材だけを変更すれば、それで様々なものが作れるようになります。この「保持する」「処理する」「対象のデータ」分離させる事によって、柔軟な処理導線を構築するのがBuilderパターンの特徴です。Builderパターンの基本的なクラス図は以下の通りです。実装例PHPフレームワークなどを収録したデータを処理する流れをBuilderパターンで実装します。Productクラスです。データ「Frameworks」の定義を行います。}}基本的な定義のみを行っています。次に、Directorクラスです。}}監督らしく、コンストラクタで職人と素材を受け取り、getFrameworks()メソッドで結果データを取得しています。後述しますが、parse()メソッドはインターフェイスで定義された、いわゆる「約束されたメソッド」なので、彼は制作グループの状況など気にしなくても、目をつぶっていても成果物を要求できます。鬼軍曹のようなクラス定義です。疎結合と柔軟性の為です。割り切るしかありません。次はBuilderクラスです。インターフェイスを定義します。parse($data);}堅牢な関係構築の為に「約束された地」としてこのparse()メソッドを定義しています。このおかげで、あの鬼監督は昼夜問わずに制作チームへ成果物を要求する事が出来ます。最後にこのインターフェイスを実装したConcreteBuilderクラスです。彼らがデータの処理を担います。}}もちろんparse()メソッドは必須です。鬼監督からガンガン投げられてくる素材(jsonファイルパス)を必死に読み込み・処理をして返す健気な役回りです。ちなみに今回はjsonファイルを処理する感じにしたので、それを読み込むconvert()メソッドも定義しています。構築が完了したので、クライアント側から利用してみます。結果は以下になります。[Python]まとめそれぞれの役割の分離が明確でコードも追いやすく、使いやすいのもBuilderパターンの特徴です。例は例に過ぎず、たくさんの場面でこのパターンを用いる事が出来るので、是非試してみてください。イベントレポート2019.12.8MySQL8.0.16で追加されたCHECK制約を試してみる。2019.12.2LaravelのContracts(契約)とは。SESを使ってAPIメール送信を行う(Mailableクラス&SimpleEmailService)2019.12.3MySQL8.0.16で追加されたCHECK制約を試してみる。RitoLaboこのサイトについて利用規約プライバシーポリシ。