воскресенье, 11 декабря 2011 г.

Паттерн "Декоратор" на Python

Паттер "Декоратор" на языке python. Mocha это молочная пена,а не моча :)))))


from abc import ABCMeta,abstractmethod,abstractproperty
class Beverge:
    def __init__(self):
        self.description = 'Unknown'
    def getDescription(self):
        return self.description
    @abstractmethod
    def cost(self):
        pass
class CondimentDecorator(Beverge):
    @abstractmethod
    def getDescription(self):
        pass
class Expresso(Beverge):
    def __init__(self):
        self.description='Expresso'
    def cost(self):
        return 1.99
class HouseBlend(Beverge):
    def __init__(self):
        self.description='HouseBlend'
    def cost(self):
        return 2.99
class Mocha(CondimentDecorator):
    def __init__(self,beverge):
        self.beverge = beverge
    def getDescription(self):
        return self.beverge.getDescription() + ", Mocha"
    def cost(self):
        return self.beverge.cost() + 0.20
class Soy(CondimentDecorator):
    def __init__(self,beverge):
        self.beverge = beverge
    def getDescription(self):
        return self.beverge.getDescription() + ", Soy"
    def cost(self):
        return self.beverge.cost() + 0.87
if __name__ == "__main__":
    b = Mocha(Soy(Mocha(Expresso())))
    print b.getDescription() + " $ " + str(b.cost())

Выходные данные:
Expresso, Mocha, Soy, Mocha $ 3.26

Комментариев нет:

Отправить комментарий