Buscar

ARTIGO_DESIGN_PATTERNS

Prévia do material em texto

¹ Aluno do Curso de Graduação em Engenharia de Software- Faculdade FUCAPI. 
² Orientador Professor da Disciplina de Projeto de Sistemas- Faculdade FUCAPI 
PADRÕES DE PROJETOS 
Welrikyson Felix Marinho da costa¹ 
Eder Franco Martins2 
 
 
RESUMO: No presente artigo explanamos sobre cinco padrões de projetos, com 
suas descrições, vantagens e desvantagens e implementações. De forma a deixar 
claro que o conhecimento dos mesmos é de suma importância em ambiente de 
desenvolvimento de software de complexidade alta, trazendo assim grandes 
melhorias de manutenção, testabilidade e arquitetura. Tais soluções reutilizáveis 
criam uma linguagem comum e padronizada para resolver problemas no 
desenvolvimento de software. 
Palavras-chave: Padrões . Qualidade. manutenção . reutilizavies . 
 
 
1 INTRODUÇÃO 
 Segundo Christopher Alexander (1977) cada padrão descreve um problema 
que ocorre repetidamente em nosso ambiente, e então descreve o núcleo da 
solução para esse problema, de uma forma que você possa usar essa solução um 
milhão de vezes, sem nunca o fazer da mesma forma duas vezes. Padrões de 
Projeto ajudam os desenvolvedores a resolverem problemas comuns que ocorrem 
em sistemas orientados a objetos através da reutilização de soluções que 
funcionaram no passado tornando assim os sistemas mais flexíveis e reutilizáveis. 
Erich Gamma et.al. (2000) afirma que um padrão possui quatro elementos 
essenciais, são eles: o nome do padrão que em poucas palavras resume o padrão 
para tornar mais fácil a comunicação; o problema que descreve quando aplicar o 
padrão em uma determinada situação; a solução onde se descreve os elementos 
que compõe o projeto, seus relacionamentos, suas responsabilidades e 
colaborações; e por fim, as consequências que são os resultados e análises das 
vantagens e desvantagens da aplicação de um padrão. 
 
2 REVISÃO BIBLIOGRÁFICA 
2.1 Template Method 
Este padrão é aplicável quando se deseja definir um algoritmo geral, que 
estabelece uma série de passos para cumprir um requisito da aplicação. Porém, 
 
 
2 
 
seus passos podem variar e é desejável que a estrutura da implementação forneça 
uma forma para que eles sejam facilmente substituídos (Guerra, 2012,29). 
“De acordo com a Gangue dos Quatro, o padrão Template Method 
define um esqueleto de um algoritmo em uma operação, delegando 
alguns passos para subclasses e os redefinindo em um algoritmo, 
sem mudar a estrutura do mesmo”. (SHALLOWAY, 2004). 
Vantagens: 
Com o Template Method podemos reaproveitar o código relativo à parte 
comum de um algoritmo, permitindo que cada passo variável possa ser definido na 
subclasse. 
Definir uma funcionalidade mais geral na qual pode ser facilmente 
incorporada a parte específica do domínio da aplicação. É importante lembrar que os 
modificadores adequados dos métodos devem ser utilizados para impedir que o 
contrato da superclasse com os seus clientes seja quebrado. 
Desvantagem: 
Torna-se fácil esquecer de chamar a operação herdada 
 
Exemplo de implementação 
 
 
3 
 
 
 
4 
 
 
 
2.2 Injeção de Dependências 
 Quando um objeto precisa da colaboração de outro para cumprir suas 
responsabilidades, é um processo natural que o próprio objeto crie ou busque essas 
instâncias. Essa responsabilidade pela criação das dependências, quando está no 
próprio objeto, pode acabar criando um acoplamento e prejudicando a modularidade, 
mesmo quando interfaces são utilizadas para interação entre as classes.(SITAÇÃO 
java) 
Vantagens: 
Tonar as classes mais reutilizáveis, 
Torna os testes de unidade mais simples 
Desvantagens: 
Dificultar a compreensão do contexto global de como os objetos interagem 
para formar a funcionalidade da aplicação. 
Exemplo de implementação 
 
 
5 
 
 
2.3 Observer 
 O padrão de projeto Observer é usado quando se precisa manter os objetos 
atualizados quando algo ocorrer. 
“O padrão Observer define uma dependência um-para-muito entre objetos 
para que quando um objeto mudar de estado, todos os seus dependentes sejam 
notificados e atualizados automaticamente”. (ROCHA, 2003). 
 Vantagens: 
 Tanto os observadores quando sujeitos observados podem ser reutilizados e 
ter sua interface e implementação alteradas sem afetar o sistema. 
 Desvantagens: 
 O uso indiscriminadamente pode causar grande impacto na performance. 
Exemplo de implementação: 
 
 
 
 
6 
 
 
 
2.4 Strategy 
A lógica condicional é uma das estruturas mais complexas e utilizadas no 
desenvolvimento de softwares corporativos. Lógicas condicionais tendem a crescer 
 
 
7 
 
e tornar-se cada vez mais sofisticadas, maiores e mais difíceis de manter com o 
passar do tempo. 
O padrão Strategy ajuda a gerenciar toda essa complexidade imposta pelas 
lógicas condicionais. O Padrão Strategy sugere que se produza uma família de 
classes para cada variação do algoritmo e que se forneça para a classe hospedeira 
uma instância de Strategy para a qual ela delegará em tempo de execução. Um dos 
pré-requisitos para o Strategy é uma estrutura de herança onde cada subclasse 
específica contém uma variação do algoritmo. 
Assim, o padrão Strategy possui diversos benefícios como clarificar 
algoritmos ao diminuir ou remover lógica condicional, simplificar uma classe ao 
mover variações de um algoritmo para uma hierarquia, e habilitar um algoritmo para 
ser substituído por outro em tempo de execução. 
Vantagens: 
Diminui o uso de condicionais no código, 
Reuso de algoritmos, 
 
Desvantagens 
Aumenta o número de objetos no sistema 
Fica complicado saber como os algoritmos recebem ou obtêm dados de suas 
classes de contexto. 
2.5 FACTORY METHOD 
“De acordo com a Gangue dos Quatro, o padrão Factory Method define uma 
interface para a criação de um objeto, mas deixa que as subclasses decidam qual 
classe instanciar”. (SHALLOWAY, 2004). 
O padrão Factory Method define uma classe comum para a criação de 
Objetos. Isso possibilita que classes sejam criadas sem que o desenvolvedor 
conheça a classe concreta do objeto a ser criado, sendo necessário apenas 
conhecer a classe do criador. 
 Vantagens: 
Criação de objetos desaclopada do conhecimento do tipo concreto do objeto; 
 
 
8 
 
Conecta hierarquias de classe paralelas e 
Facilita a extensabilidade. 
Desvantagens: 
Precisa saber a classe concreta do criador das instancias. 
 
Exemplo de implementação: 
 
 
 
9 
 
 
3 CONSIDERAÇÕES FINAIS 
A atual necessidade de programas e sistemas cada vez mais eficientes para 
ocuparem o mesmo nível dos hardwares de alta tecnologia faz do trabalho do 
programador uma tarefa complexa. 
Os padrões de projeto são parte fundamental na elaboração e construção de 
um software, proporcionando mais eficiência, otimização e diminuição da 
complexidade do mesmo, atuando no âmbito comportamental, estrutural e de 
criação do software. 
REFERÊNCIAS 
1 Martin Fowler. Inversion of control containers and the dependency injection 
pattern. http://martinfowler.com/articles/injection.html, 2004. 
 
2 GAMMA, Erick; HELM, Richard; JOHNSON, Ralph; VLISSIDES, John; Trad. 
Luiz A. Meirelles Salgado. Padrões de Projeto Soluções Reutilizáveis de 
Software Orientado a Objetos. Porto Alegre: Bookman, 2000. 
 
3 GUERRA, EDUARDO. Design Patterns com java. Casa do Código, 2003. 
 
Sites: 
ROCHA, Helder da. J930: GoF Designer Patterns em Java. Fevereiro de 2003. 
Disponível em: . Acesso em: 18 Nov. 2018.

Continue navegando