« 英語で読む「Rails」 | Main | 英語で読む「OWASP」 »

2018.09.13

英語で読む「GoF」

quote for TOEICでも引用している、GoF(Gang of Four)と呼ばれる4人のおじさんによるデザパタ本の原文を紹介する。デザパタ本が出版されたのが1994年だから、もう25年だ。

ちなみに原文を探したところ、どういうわけかMicrosoftにまとまってたので、こちらから引用する。

https://social.msdn.microsoft.com/Forums/en-US/af062e83-3e61-45d4-aeaa-d30b4366c6a2/the-23-gang-of-four-design-patterns-cheat-sheet?forum=architecturegeneral

9. Façade: Provide a unified interface to a set of interfaces in a system. Façade defines a higher-level interface that makes the subsystem easier to use.

数年前にAPI Gatewayの説明を聞いてたら「これはデザパタのFacadeに相当する」という説明をされ「なるほどデザパタって、こういうときにも使えるんだ」と思った。つまりデザパタ公開当時はオブジェクト指向の有効な使い方の普及が目的であったが、いまやアーキテクチャ議論に使われるほど汎用性があるというわけだ。

15. Mediator: Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and lets you vary their interaction independently.

これもプログラムではなくアーキテクチャ議論で目にした。片方がモダンなAPIで、もう片方がレガシーという機能ブロックにMediatorという名前が付けられていて、どういう命名なのか不思議に思ったのだが、後でMediatorもデザパタのひとつと知って納得。

21. Memento: Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later.

これは昔の話だが、こういう機能(データベースに頼らずロールバックするなど)を実装するか検討したときがあり、なかなか議論が噛み合わず、後でデザパタでメメントと名前が付いてることに気付いたということがあった。ただ、果たして当時の開発チームでメメントという用語を出して議論してスムーズになったかどうかは怪しい。

自分の仕事の中では、なかなか実感する機会はないのだが、それでも、たまに思い出してもいいかもと思っている。山口周さんの「武器になる哲学」で「短兵急いアウトプットだけを知りたい、教えたいという気持ちを抑え、むしろそのアウトプットを主張するにあたった思考のプロセスや問題に向き合う態度をストーリーとしてコンパクトに紹介することが重要だ」という一節があったが、デザパタも似たような位置づけで読み継がれるべきものかもしれない。

|

« 英語で読む「Rails」 | Main | 英語で読む「OWASP」 »

英語で読むITポリシー」カテゴリの記事