implementação de vários patterns