Refatorando o codigo, usando padroes de projeto