Java言語で学ぶデザイパターン入門 3章 *[TemplateMethod]

Java言語で学ぶデザインパターン入門

Java言語で学ぶデザインパターン入門

・スーパクラスで処理の枠組みを決め、サブクラスでその具体的内容を決めるデザインパターン
アルゴリズム、処理の流れはすべてスーパークラスへ、細かい動きをサブクラスへ
→定形処理系のアルゴリズムに適しているパターン?
・スーパクラスにバグがあった場合、スーパクラスのみを修正すれば良い
複数のクラスに同じような処理を記述している場合はそれぞれに修正が必要。
→バグ対策とするのであれば利点・魅力は薄い?
・スーパクラスの実装を知らなければサブクラスは作れない。
・スーパクラスが期待する動作をサブクラスは実装する必要がある
→複数人で開発を行い、開発者のレベルが違う場合に適用すると、スーパクラスの実装を行った開発者のレベルにある程度あわせることができる?
少なくとも似たような作りにはなりそうなので、保守派しやすいか?
java.io.InputStreamクラスを例に取ると、int read()メソッドがabstract。read(byte[], int, int) などから「1バイト読む」処理としてコールされるread()メソッドの実装はサブクラスに任せている
→かなり細かい部分のみをサブクラスにやらせている?そういう使い方なの?
・Template Methodはオーバーライドすべきでない、そのためTemplate Methodはfinal宣言をする
アルゴリズムを担う部分と考えれば当然かな。