Considere o diagrama, abaixo, elaborado por um Técnico Judiciário de TI:
Com base neste diagrama,
- A. a classe Pessoa possui os métodos Nome, NumeroCpf, NumeroCnpj e Tipo (Fisica ou Juridica ou Estrangeira).
- B. todas as classes que precisem obter o documento da pessoa devem implementar um comando condicional do tipo if com base no atributo Tipo, considerando o NumeroCpf ou NumeroCnpj, por exemplo, como o documento.
- C. há uma interface Pessoa com o método Nome e com o objeto ObterDocumento e três classes que encapsulam três métodos: PessoaFisica (NumeroCpf), PessoaJuridica (NumeroCnpj) e PessoaEstrangeira (NumeroPassaporte).
- D. cada classe ligada à Pessoa fará sua própria implementação da operação ObterDocumento, de forma que não haja preocupação com a regra para obtenção do documento com base no tipo da pessoa.
- E. caso seja necessário adicionar um quarto tipo de pessoa (PessoaAsilada), o impacto seria grande para as classes dependentes, já que o objeto ObterDocumento teria que ser reescrito em todas elas.