Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Inserindo novos descontos sem alterar o Calculador_de_descontos

Não seria melhor se a classe Calculador_de_descontos recebesse os descontos por parâmetro?

class Calculador_de_descontos(object):

    def calcula(self, orcamento, desconto):
        return desconto.calcula(orcamento)

E no exemplo, não faz muito sentido Calculador_de_descontos existir já que tem apenas um método e nem possui estado.

A cadeia de descontos poderia ser chamada diretamente:

if __name__ == '__main__':

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Item A', 100.0))
    orcamento.adiciona_item(Item('Item B', 50.0))
    orcamento.adiciona_item(Item('Item C', 400.0))

    desconto = Desconto_por_cinco_itens(
        Desconto_por_mais_de_quinhentos_reais(
            Sem_desconto()
        )
    )
    desconto = desconto.calcula(orcamento)
    print 'Desconto calculado : %s' % (desconto)
2 respostas

Opa, eu não sei exatamente de qual parte do curso que vc ta falando, mas pelo seu exemplo aqui do fórum, eu acho que vc tem razão :).

solução!

Oi Alberto. Eu me refiro a aula 2 (Muitos descontos e o chain of reponsibility) do curso Boas práticas de programação Design Patterns Python I