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.
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.
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.
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.
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.
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.
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.
Olá pessoal! Seis meses sem postar nada por aqui não significa que nunca mais o farei. Estou de volta e com muita coisa para escrever. Como o título do post sugere, sou mais um dos seguidores fiéias do tio Jobs louvando-o com um Macbook em mãos. Então já criei novas novas Tags para sempre que puder deixar por aqui dicas do Mac OS X.
Deixando de contar histórias, vamos ao que interessa: criar rotas persistentes no Mac OS. Se há algum meio mais “simples” e bonito para isso eu não sei, mas a referência que busquei indicou me passos a serem realizados em um console de comandos. Nada de muito complexo, como veremos adiante.
ATENÇÃO: o conteúdo desta postagem pode estar desatualizado. Foi utilizado como base uma versão antiga do Linux Ubuntu. Tente o procedimento por sua própria conta e risco.
Olá a todos! De tempos em tempos eu volto aqui para uma dica, porém acredito que no próximo mês terei mais tempo para escrever por aqui, já que terei um trabalho de pesquisa a fazer e uma boa maneira de ir treinando é também escrever. Mas, voltando ao que importa agora, vou dizer-lhes como devemos trabalhar com o arquivo /etc/fstab do Ubuntu (desde a versão Dapper, acredito eu) e outras distribuições mais atuais. Para quem já reparou, o arquivo em questão está bem diferente do usual, possuindo termos como os UUIDs
Olá a todos! De tempos em tempos eu volto aqui para uma dica, porém acredito que no próximo mês terei mais tempo para escrever por aqui, já que terei um trabalho de pesquisa a fazer e uma boa maneira de ir treinando é também escrever. Mas, voltando ao que importa agora, vou dizer-lhes como devemos trabalhar com o arquivo /etc/fstab do Ubuntu (desde a versão Dapper, acredito eu) e outras distribuições mais atuais. Para quem já reparou, o arquivo em questão está bem diferente do usual, possuindo termos como os UUIDs (Universally Unique Identifier) em vez dos tradicionais dispositivos do diretório /dev. Explico a seguir como realizar modificações no arquivo sem querer este padrão.
Olá pessoal! Sumido mas ainda vivo! Vim aqui para dizer como resolvi um probleminha chato. Para início de conversa, já comentei em posts anteriores que eu utilizo Windows. Sim, é verdade! E o que me deixava mais chateado ao utilizá-lo era o fato do plugin FireGPG não funcionar no Firefox do Windows. Oras! Como pode funcionar no meu Linux e no Windows nada? Sempre deixei de lado para resolver depois, mas hoje realmente passei um aperto por não poder utilizá-lo e resolvi sair a caça.
