Oi Cleber,
Você já recebeu excelentes idéias! Só gostaria de dar mais uma: No meu Framework, muitas tarefas PRECISAM ser realizadas pelo desenvolvedor das sub-classes nos métodos Load e Init. Para "garantir" que elas sejam executadas, faço testes em relação a estes pré-requisitos e tento assegurar que eles estejam sendo cumpridos. Dentro das idéias de qualidade de software onde temos as pré-condições e pós-condições, faço algo mais ou menos assim:
ASSERT TYPE("this.oObjetoQueDeveTerSidoCriadoNoLoad") = "O" and ;
this.oObjetoQueDeveTerSidoCriadoNoLoad != null ;
MESSAGE "O objeto deve ser criado no método Load()"
O comando ASSERT assegura que uma condição seja obedecida e avisa o desenvolvedor caso esta condição não seja setisfeita. Para que este comando funcione: SET ASSERTS ON
Note que este comando só atua em tempo de desenvolvimento, o que permite que você faça diversos testes sem ter que se preocupar em retirá-los depois na hora de gerar a versão de distribuição do seu software.
HTH.
Um abraço!