Considere o seguinte domínio.
Um banco oferece vários produtos financeiros. Um desses produtos são os empréstimos. Um empréstimo tem juro e um prazo de pagamento. Empréstimos com diferentes prazos podem ter diferentes juros. A entidade empréstimo pode ser representada da seguinte forma:

class Emprestimo {
    private String _prazo;
    private float _juro;

    public Loan(String prazo, float juro) {
        _prazo = prazo;
        _juro = juro;
    }

    public float obtemJuro() {
        return _juro;
    }

    public void alteraJuro(float juro) {
        _juro = juro;
    }
}

Suponha agora que pode haver várias entidades interessadas em serem notificadas sempre que a taxa de juro de um empréstimo é alterada (particulares, empresas, jornais de economia, etc). As entidades interessadas são dinâmicas, no sentido em que o conjunto de entidades interessadas pode ser modificado em qualquer momento. Além disto, em qualquer momento podemos ter um novo tipo de entidade que poderá estar interessada em receber notificação sempre que um dado empréstimo altera o seu juro.
Aplique o padrão de desenho Observer neste domínio por forma a suportar este requisito. Compare a sua solução com seguinte solução.