Baixe o app para aproveitar ainda mais
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.
Compartilhar