Шаблонный метод - это то, что вы хотите. Это один из старейших, просто формализация способа составления ваших классов.
http://en.wikipedia.org/wiki/Template_method_pattern
или как в этом примере кода:
abstract class AbstractParent // this is the template class
{
// this is the template method that enforces an order of method execution
final void executeIt()
{
doBefore(); // << to be implemented by subclasses
doInTheMiddle() // also to be implemented by subclasses
doLast(); // << the one you want to make sure gets executed last
}
abstract void doBefore();
abstract void doInTheMiddle();
final void doLast(){ .... }
}
class SubA extends AbstractParent
{
void doBefore(){ ... does something ...}
void doInTheMiddle(){ ... does something ...}
}
class SubB extends SubA
{
void doBefore(){ ... does something different ...}
}
Но, похоже, вы ищете возможность использовать шаблон, а не использовать шаблон для решения определенного типа проблемы. Это только приведет вас к плохим привычкам разработки программного обеспечения.
Не думай о шаблонах. Подумайте, как вы могли бы решить эту конкретную проблему, не имея шаблонов.
Представьте, что не было кодифицированных паттернов (как это было раньше). Как бы вы достигли того, что вы хотите сделать здесь (что люди и сделали, чтобы решить проблемы такого типа). Когда вы сможете это сделать, вы будете в гораздо лучшем положении для понимания закономерностей.
Не используйте их как формочки для печенья. Это последнее, что вы хотите сделать.