今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

やっぱり継承は分かりにくい

ずいぶん前に書いた、Template Method パターンを使用したクラスをメンテナンス。具体的にはキューを制御するためのクラスなんだけど、Java5 には便利なキュー制御のクラスがいくつも追加されている。ちょっとうらめしい。
実際に欲しかったのは DelayQueue に近い機能。そして AbstractQueue に相当するクラスで TemplateMethod パターンを利用して、TemplateMethod でキューへの追加と、キューからの取り出し条件をサブクラスで記述できるようにしてある。
でもね、やっぱりね、たとえ自分が書いたコードだとしても、書いてから長い時間が経過した後でコードを読むと、継承を使ったものはわかりにくい。コードを読むときに、ふたつのクラスのコードを行ったり来たり。
継承って、スーパークラスとサブクラスが混ざっている状態。しかもサブクラスはスーパークラスのフィールドをアクセスできたりするもんで、その辺が分かりにくい原因のような気がする。