有効なものとそうではないものがある、というのが正直なところです。たとえば、言語処理系のようなものを作るなら未だにVisitorパターンは有用です(が、それの対になるInterpreterパターンは実用上使いづらすぎてあまり見かけませんが)。

Compositeは有効とか有効でないとか以前にオブジェクト指向言語でツリー構造作るなら「これ以外に良いやりかたあったっけ」みたいな奴なので当然に現役ですし、Observerも変種含めるなら今でも普通にあります。Strategyについては、メソッド一つで済むようなものは結局関数オブジェクトとして書けるわけで、そこに吸収されていった感があります。

今でも使われているけど、有効性(有害性)について議論が分かれるパターンもあって、その代表格はTemplate Method(その一種とも言えるFactory Methodも同じ)でしょう。実装継承の有害性が広く知られるようになって久しいですが、Template Methodはまさに実装継承の力を使っているので、使い過ぎには注意というところです。

他には有効かどうかはともかく、Memento、Mediator、Facadeなんかはあまり見なくなった感じがありますね。

全体として、知見の蓄積によってあまり有効でないことがわかって使われなくなったり、言語の進化によってパターンじゃなくて普通にライブラリとして実装できるようになったというのも大きいでしょう。

特に、今どきの言語がほとんどいわゆる「ラムダ式」を備えているの重要なことだと思っていて、内部イテレータ的なものは単純に高階関数として実装できてしまうし、Strategyパターンでメソッド一つみたいなケースもこれで賄えてしまいます。GoFパターン自体は全体としては衰退した感じがしますが、ラムダ式の普及は大きいような気がします。

2023/09/07投稿
Loading...
匿名で kmizu さんにメッセージを送ろう

利用規約プライバシーポリシーに同意の上ご利用ください

Loading...