/note/tech
Execute Around Method
- 事前処理/事後処理の間に挟まるメイン処理をクロージャで差し替え可能にしておく
- テンプレートメソッドパターンみたいなイメージ(一部を実装しておき、差し替えたい部分のみ差し替え可能にしておく)
Pluggable Behavior
- 何がしたいのかよくわからない
- ループは必須要素なのか?
- 恐らくループは必須要素ではなく、重要なのは外部からクロージャを渡して処理内容を差し替え(プラガラブル)にできることだろう
- サンプルが悪い
Iterator Pattern
- GoF版のイテレータと目的が異なるので混乱する
- ループ内の処理をクロージャで差し替え可能にできる、というのが論点
- サンプルが悪いと思う
Dynamical Conditional Execution
- これもIF文の条件分岐毎の処理をクロージャで差し替え可能にするという話
- パターンと言えるようなものか?感はある
Template Method Pattern
- サンプルがゴチャゴチャしてるけど、本質的にはExecute Around Methodと同じじゃないのか
- 要するに事前/事後処理をクロージャで差し替え可能にしているだけ
- サンプルが悪い
Loan Pattern
- クロージャというか、Try-Finallyで確実に事後処理を行うというだけでは?
- 言語仕様に依存する話で、クロージャは関係ない
Command Design Pattern
- サンプルがわかりにくい
- 要するにクロージャや関数オブジェクトをリストに登録して、実行時はリストをループしながら登録されたクロージャ/関数を実行するという話
Strategy Pattern
- サンプルでループを使っているせいで分かりにくくなっている(ループは本質的な構成要素ではない)
- 要するに外部からクロージャを渡して処理内容を差し替えることができるというだけで、Pluggable Behaviorなどと同じ
- これもサンプルが悪い
Factory Pattern
- GoF版のファクトリーパターンと目的が違うので混乱する
- 要するに関数の合成をやっている
- 普通に関数合成と呼べばよいのでは?
Method Combination
参考URL:
(2023/01/16)