Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Estou com dúvida no curso de Design Patterns para bons programadores, no exercício 4 do capítulo Comportamentos compostos por outros comportamentos e o Decorator.

Boa noite!

Encontrei alguns ajustes para a implementação de resposata da atividade 4 do padrão de projeto Decorator, sei que são coisas sem muita relevância, mas a intenção é só informar mesmo, um abraço, seguem abaixo:

01 - Ajustes na super classe (Filtro), ficou faltando o tipo de retorno do método ( protected List proximo(List contas) )

    protected proximo(List<Conta> contas) {
        if(outroFiltro != null) return outroFiltro.filtra(contas);
        else return new ArrayList<Conta>();
    }

02 - Todas as classes que herdam da super classe ( Filtro ), possuem um erro no método ( filtra(List contas) ), observe que a conta que atende a condição do filtro atual é adicionada a lista de itens filtrados mas não é retirada da lista que é passada para o método ( proximo(contas) ), desta forma uma mesma conta é adicionada a lista de contas filtradas mais de uma vez caso atenda a condição de mais de um filtro.

    public List<Conta> filtra(List<Conta> contas) {
        List<Conta> filtrada = new ArrayList<Conta>();
        for(Conta c : contas) {
          if(c.getValor() < 100) filtrada.add(c);
        }

        filtrada.addAll(proximo(contas));
        return 
    }
1 resposta
solução!

Eu também tive que fazer este ajuste (13/10/13 08:22)