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.