Continuando a nossa serie, apresento-lhes mais um padrao de projeto criacional: Abstract Factory.Temos a seguinte situacao:Um banco possui dois tipos de contas: Corrente Poupanca Cada uma delas pode ser categorizada como: Simples Normal Plus Cada uma dessas caracteristicas possuem as suas vantagens particulares. Como aplicar um padrao de projeto criacional nesses objetos de maneira a ter-se menos impacto ao inserir-se um tipo de conta nova ou mais caracteristicas das contas?Resposta: Abstract Factory! Temos entao 3 tipos de fabrica de contas poupanca ou corrente de acordo com o tipo necessario, sao elas: TipoSimples, TipoNormal e TipoPlus. Todas essas fabricas concretas sao representadas pela Fabrica Abstrata TipoConta, que e quem define os metodos de criacao, ou seja, qualquer que seja a nova fabrica a ser criada para contas, ela deve ser capaz de criar os novos tipos de conta de acordo com o proposto por essa abstracao. Assim definimos o processo de criaco totalmente flexivel: nao precisamos mudar nenhum codigo existente para criarmos mais um tipo de conta!Concluindo, apresento-lhes a ficha resumida deste padrao: Objetivo:Fornecer uma interface a ser utilizada para criar familias de objetos relacionados ou dependentes sem realmente especificar suas classes concretas.Beneficios: Isola o cliente das classes concretas(da implementacao). Facilita a troca de familias de objetos;Promove a consistencia entre objetos. Aplicabilidade:O sistema precisa ser independente da maneira como seus objetos sao criados, compostos e representados;O sistema precisa ser configurado com um objeto de uma familia de varios objetos;A familia de objetos relacionados e concebida para ser utilizada em conjunto e essa restricao precisa ser imposta;Deseja-se fornecer uma biblioteca de objetos que nao mostre as implementacoes e somente revele as interfaces. Entao e isto galera! Qualquer duvida, e so deixar o seu comentario que tentarei ajudar o mais rapido possivel! ;)Um abraco a todos e ate o proximo post!. Ola pessoal,hoje gostaria de tratar sobre um assunto que, por mais que esteja bem conceituado e conhecido por todos, sempre gera uma certa polemica ao se tomar uma decisao a respeito. Estou falando da definicao de um sistema de controle de versoes (Software Configuration Management - SCM) para controlar e gerenciar a evolucao dos artefatos gerados por um projeto de software.Embora existam dezenas de sistemas dessa linha, tratarei aqui apenas dos mais utilizados atualmente no mercado: o CVS e o Subversion (SVN) frutos de uma boa e produtiva discussao gerada na empresa onde trabalho. Fato que me motivou a escrever sobre este tema apos coletar dados e pesquisas suficientes para argumentar a migracao do nosso SCM atual, o CVS, para o Subversion. Para uma completude das argumentacoes, tambem era necessario se levantar uma forma de migrar todos os dados hisoricos do repositorio do antigo para o novo sistema.Para resumir a comparacao entre as duas tecnologias, criei uma tabela que cruza caracteristicas dos dois sistemas em uma perspectiva de administracao da ferramenta, que e o que no fundo mais importa, ja que as ferramentas utilizadas como clientes para acessa-las sao muito parecidas e de facil assimilacao, o que nao influenciaria em nada como vantagem ou desvantagem entre um e outro sistema de versionamento.CVSSubversionArmazenamentoE feito em