I believe the Template Method pattern generally is a very dangerous pattern.
- A lot of times it uses up your inheritance hierarchy for "the wrong reasons".
- Base classes have a tendency to become littered with all sorts of unerelated code.
- It forces you to lock down design, often quite early in the development process. (Premature lock down in a lot of cases)
- Changing this at a later stage becomes just harder and harder.