62
Use a Cabeça Padrões de Projetos
Mestre e aluno...
Mestre: Gafanhoto, já passou algum tempo
desde o nosso último encontro. Você meditou
sobre a herança?
Aluno: Sim, mestre. Embora a herança
seja poderosa, aprendi que nem sempre leva
aos designs mais exíveis ou sustentáveis.
Mestre: Ah, sim, você fez algum progresso.
Então diga-me, meu aluno, como eles irão obter
a reutilização se não por meio da herança?
Aluno: Mestre, aprendi que existem maneiras de “herdar”
comportamento em tempo de execução por meio da composição e
da delegação.
Mestre: Por favor, continue...
Aluno: Quando herdo um comportamento por meio de subclasses, esse
comportamento é denido estaticamente no tempo de compilação. Além
disso, todas as subclasses devem herdar o mesmo comportamento.
No entanto, se eu puder estender o comportamento de um objeto por
meio da composição, poderei fazer isso dinamicamente em tempo de
execução.
Mestre: Muito bom, Gafanhoto, você está começando a ver o poder
da composição.
Aluno: Sim, para mim é possível adicionar diversas novas
responsabilidades a objetos por meio dessa técnica, incluindo
responsabilidades que nem foram pensadas pelo designer da
superclasse. E eu não preciso tocar em seu código!
Mestre: O que você aprendeu sobre o efeito da composição na
manutenção de seu código?
Aluno: Bem, é aí que eu queria chegar. Ao compor os objetos de forma
dinâmica, posso adicionar nova funcionalidade escrevendo um código
novo em vez de alterar o código existente. Como não estou alterando
o código existente, as chances de introduzir erros ou causar efeitos
colaterais indesejados no código preexistente são muito reduzidas.
Mestre: Muito bom. Chega por hoje, Gafanhoto. Gostaria que você
meditasse mais um pouco sobre esse assunto... Lembre-se, o código
deve ser fechado (para alteração) como a or-de-lótus à noite, mas
aberto (para extensão) como a or-de-lótus de manhã.
.
Princípio de projeto
As classes devem estar abertas para extensão,
mas fechadas para modicação.
CG_ucpadroes_RI2016.indb 62 22/11/2016 09:36:13
Get Use A Cabeça Padrões E Projetos now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.