segunda-feira, abril 22, 2013

Anotação: CompositePattern em Python

Python possui interfaces implícitas: no exemplo abaixo a interface é definida pela existência de um método "matches" nos objetos participantes do Composite.

class CompositePattern:
    def __init__(self):
        self.patterns = []
    
    def add(self, pattern):
        self.patterns.append(pattern)
    
    def matches(self, date):
        for pattern in patterns:
            if not pattern.matches(date):
                return False
        return True

cp = CompositePattern()
cp.add(YearPattern(2004))
cp.add(MonthPattern(9))
cp.add(DayPattern(29))

Fonte: 

Nenhum comentário: