Skip to content
01/09/2009 / Thiago

Software Design Pattern: Singleton

Dando prosseguimento a série de artigos sobre Design Patterns, hoje vou falar sobre o padrão de projeto Singleton.

Singleton

Objetivo – criar uma estrutura para controle da instanciação de um tipo de objeto. Imaginando que um objeto apenas pode ser criado uma única vez, o padrão de projeto Singleton oferece um controle sobre o uso do objeto.

Em alguns projetos é necessário apenas uma instância de uma determinada classe. Por exemplo, em uma aplicação onde existe a geração de arquivos de log, uma única classe responsável em fazer a gestão dos logs poderá ser criada. Outro exemplo que posso citar é a de uma aplicação Web. Um único objeto pode ser criado para realizar a gestão da sessão do usuário. Caso o mesmo já possua uma sessão e seja pedida pela aplicação Web criar uma nova, a existente será retornada.

Leia mais…

01/09/2009 / Thiago

Software Design Pattern: Factory Method

Então pessoal! De volta ao batente, vou falar hoje sobre o Software Design Pattern Factory Method.

Factory Method

Objetivo – criar uma interface em comum para a criação de diversos tipos de objetos correlacionados, deixando a implementação do método para as sub-classes. Constitui-se de um método virtual construtor de objetos.

Para quem anda acompanhando os posts que ando publicando sobre padrões de projeto, por diversas vezes Factory Methods foram usados dentro de outros Design Patterns. O diagrama UML abaixo demonstra um exemplo de uso de Factory Method, onde em uma aplicação há várias seções (MacbookSection e iMacSection) que possuem particularidades para a criação dos objetos que irão compor a seção. Deste modo cada um realiza a instanciação dos objetos através da super classe Product.

Leia mais…

01/09/2009 / Thiago

Software Design Pattern: Builder

Continuando a série sobre Software Design Patterns, hoje irei falar com o padrão de projeto conhecido como Builder.

Builder

Objetivo – permitir a abstração de uma complexa construção de objetos através de uma interface comum. Alguns objetos podem possuir particularidades na sua construção que podem ser ocultados através da interface de um Builder.

Para a existência do Builder, existem diversas entidades participantes, como posso lista-las abaixo:

  • Director – realiza o pedido de construção do objeto através da interface que o Builder oferece.
  • Builder – é a interface para a criação dos objetos utilizando as classes Concrete Builders.
  • Concrete Builder – define como será realizada a implementação dos Products, realizando sua implementação e definindo métodos para o retorno do resultado.
  • Product – classe que é instanciada pelo Concrete Builder e depois será retornada para o Director.

Leia mais…

31/08/2009 / Thiago

Software Design Pattern: Abstract Factory

Faaaala povo! Alguém por acaso ainda lê isso aqui regularmente? Se lia com certeza já parou faz tempo. Não atualizo o blog faz meses. Como me desculpar não é algo digno de se fazer quando não posso prometer que irei mudar, vou me focar apenas em escrever algo interessante. Neste momento me apetece escrever sobre Software Design Patterns. Não que eu seja um grande programador, mas eu preciso treinar o conteúdo e acho que farei bem escrever enquanto estudo. Vou inaugurar então com este post a sessão Software Design Patterns no blog, onde irei em cada post falar sobre algum modelo para a padronização do código.

O primeiro Software Design Pattern, ou em bom português, Padrões de Projeto de Software, que irei falar é Abstract Factory.

Leia mais…

03/03/2009 / Thiago

Contar Endereços IP em Logs do Tcpdump

Problema simples: contar os endereços distintos que existem em um dump criado pelo tcpdump. Melhor solução, pelo menos ao meu ver, era correr para o Shell Script. Tenho que admitir que é uma das linguagens mais simples e flexíveis que conheço. Não sou nenhum bom entendedor, mas sei fazer alguma coisa quando possível. Vamos fazer o desafio proposto então.

Leia mais…

27/02/2009 / Thiago

Exportar Base de Dados MySQL

Situação: estava fazendo o desenvolvimento de um aplicativo em uma máquina virtual — Ubuntu 8.04.2 — com PHP e MySQL. Eis que resolvo começar a trabalhar nativamente, utilizando o PHP e MySQL no próprio Mac OS. Mas a base de dados que já estava implementada e populada na máquina virtual. O que fazer para “transportá-la” para outro MySQL? Solução simples, como mostro a seguir.

Leia mais…

26/02/2009 / Thiago

Apache e PHP no Mac OS X

Fala galera! Voltando para falar sobre o Mac novamente, hoje quis deixar o uso da máquina virtual Ubuntu para passar a fazer o meu trabalho atual nativamente, o que me poupa memória volátil do equipamento e me permite usar um software mais elaborado para o desenvolvimento, algo como o Eclipse ou semelhante. Vamos ver como se faz para por a funcionar o Apache e PHP juntos no Mac OS X.

Leia mais…