hirokisan / design-pattern

デザインパターン学習用のリポジトリ
0 stars 0 forks source link

メモ #7

Open hirokisan opened 4 years ago

hirokisan commented 4 years ago

概要

メモ置き場

hirokisan commented 4 years ago

abstract factory はfactory生成の柔軟化 factory method はfactory内部処理の柔軟化

hirokisan commented 4 years ago

template method pattern

xxx { before() process() after() }

Run { xxx.before() xxx.process() xxx.after() }

みたいにすれば、柔軟性のある実装がイメージしやすい

hirokisan commented 4 years ago

template method の参考ソース見つけた

https://gihyo.jp/dev/serial/01/practical-programming-with-processing/0026

hirokisan commented 4 years ago

prototypeパターンはインスタンスをコピーして活用することで、最初から生成する手間を省けるという感じ

hirokisan commented 4 years ago

iteratorパターンでは集約オブジェクトを走査して特定の処理をさせたいと。その場合に集約オブジェクトの個別オブジェクトが一定のインターフェイスを満たしていて欲しいというような話もあるが、最初から最後までを走査に柔軟性を持たせたいという話。

走査に柔軟性を持たせるために、走査のためにiteratorインターフェイスを用意して実装する。集約オブジェクトであるaggregateインターフェイスはiteratorを生成するメソッドを用意する。

関数の中で集約オブジェクトを生成して、その集約オブジェクトの構成オブジェクトを走査して一定の処理をさせたい時に、関数側でロジックを書くのではなくて、集約オブジェクト側にロジックを描こうという話かも。

hirokisan commented 4 years ago

mediatorは連携し合うオブジェクトの中央に配置して、オブジェクト間の動作調整を行う存在。状態の確認役という感じ?

各オブジェクトはmediatorに確認して処理を決める。

hirokisan commented 4 years ago

mementoは状態の保存と復元

hirokisan commented 4 years ago

💭 template methodは継承を利用するみたいで、golangには継承という概念がないようなのでstrategyとの差分がわかりにくかったりするのかもしれない。結局のところ設計パターンをそのまま適用するという話ではないので、そんなに厳密に気にしなくてもよさそうではある。