padrão builder e padrão observer