イテレータ, デコレータ, ストラテジー, ファクトリメソッド の4つのデザインパターンを使って設計されたライブラリがあるのだけど、 これ読もうとする人はだいたい混乱するなあ。 どのクラスが何を...
イテレータ, デコレータ, ストラテジー, ファクトリメソッドの4つのデザインパターンを使って設計されたライブラリがあるのだけど、
これ読もうとする人はだいたい混乱するなあ。
どのクラスが何を担当するかがわかれば読めるはずなんだが。
例えばイテレータはバッファリングの隠蔽をしているだけ、みたいな。
これを言葉で説明しようとすると、複数のレイヤの話をごっちゃに説明しがちで、
より混乱を招くような気がする。
たぶん人間が普通に理解できるのは
複数のレイヤの話をごっちゃに説明したものであって、
抽象化はコードを単純にはするけど、説明を単純にはしない。
とはいえコードを単純化する必要はあるわけで、
その辺は限られた数のデザインパターンを学ぶことで、
学習コストを抑えるという意味があるのかと思ったりする。