Please enable JavaScript.
Coggle requires JavaScript to display documents.
Padrões de design, Front Controller - Coggle Diagram
Padrões de design
Padrões de Criação
Esses padrões de design fornecem uma maneira de criar objetos enquanto ocultam a lógica de criação, em vez de instanciar objetos diretamente usando o operador new. Isso dá ao programa mais flexibilidade para decidir quais objetos precisam ser criados para um determinado caso de uso
Factory / Fábrica
• No padrão Factory, criamos objetos sem expor a lógica de criação ao cliente e nos referimos ao objeto recém-criado usando uma interface comum
-
Singleton
Esse padrão envolve uma única classe responsável por criar um objeto, assegurando que apenas um único objeto seja criado. Essa classe fornece uma maneira de acessar seu único objeto que pode ser acessado diretamente sem a necessidade de instanciar o objeto da classe
Builder / Construtor
O padrão Builder cria um objeto complexo usando objetos simples e usando uma abordagem passo a passo. Este construtor é independente de outros objetos
Prototype / Protótipo
Esse padrão envolve a implementação de uma interface de protótipo que informa para criar um clone do objeto atual. Esse padrão é usado quando a criação do objeto diretamente é cara
Padrões Comportamentais
Descrevem como você pode usar os objetos para alterar o comportamento de um sistema em tempo de execução. Esses padrões de design se preocupam especificamente com a comunicação entre objetos
-
Comando / Command
Uma solicitação é agrupada sob um objeto como comando e passada para o objeto Invoker. O objeto Invoker procura o objeto apropriado que pode tratar esse comando e passa o comando para o objeto correspondente que executa o comando
Interpreter / Intérprete
fornece uma maneira de avaliar a gramática
ou expressão da linguagem, Esse padrão envolve a implementação de uma interface de expressão para interpretar um contexto específico
Iterator
usado para obter uma maneira de acessar os elementos de um objeto de coleção de maneira sequencial, sem a necessidade de conhecer sua representação subjacente
Mediator / Mediador
fornece uma classe mediadora que normalmente lida com todas as comunicações entre diferentes classes e suporta fácil manutenção do código por meio de baixo acoplamento
-
Observador / Observer
r é usado quando há um relacionamento do tipo um-para-muitos, e quando um objeto for modificado, seus objetos dependentes devem ser notificados automaticamente
Estado / State
cria-se objetos que representam vários estados e um objeto de contexto cujo comportamento varia conforme o objeto de estado muda
-
Strategy / Estratégia
cria-se objetos que representam várias estratégias e um objeto de contexto cujo comportamento varia conforme seu objeto de estratégia. O objeto de estratégia altera o algoritmo de execução do objeto de contexto
Modelo / Template
uma classe abstrata expõe formas definidas / modelos para executar seus métodos; • Suas subclasses podem substituir a implementação do método conforme a necessidade, mas a chamada deve ser da mesma maneira definida por uma classe abstrata
Visitante / Visitor
isola comportamentos específicos dos objetos nos quais eles operam e os coloca em uma única classe, deixando as classes focadas nas sua próprias funções, reforçando o principio da Responsabilidade Singular.
Business Delegate
É basicamente usado para reduzir a funcionalidade de comunicação ou pesquisa remota ao código da camada de negócios no código da camada de apresentação
Os padrões de projeto representam as melhores práticas usadas por desenvolvedores experientes de software orientados a objetos;
soluções foram obtidas por tentativa e erro por vários desenvolvedores de software durante um período substancial de tempo
-
Programar para uma interface, não uma implementação;
Herança
Um dos benefícios da Herança é que ela captura o que é comum e o isola aquilo que é diferente, além disso, a herança é percebida diretamente no código até mesmo devido a sua natureza estática
Entre os problemas da Herança está o fraco encapsulamento entre classes e subclasses e o forte acoplamento entre elas onde ao mudar uma superclasse pode afetar todas as subclasses além de violar o princípio básico de projeto OO em que devemos ter sempre um baixo acoplamento entre as classes. Além disso, algumas vezes um objeto precisa ser de uma classe diferente em momentos diferentes o que não é possível com a herança, pois o código não pode sofrer alterações facilmente em tempo de execução, portanto tem-se que a herança é um relacionamento estático
Composição
mais simples de entender que a herança e acontece quando
uma determinada classe A está contida em outra determinada classe B
A grande vantagem da Composição é que o comportamento pode ser escolhido
em tempo de execução em vez de estar amarrado em tempo de compilação;
os objetos que foram instanciados e estão contidos na classe que os instanciou são acessados somente através de sua interface seguindo assim o princípio de programar para uma interface e não para uma implementação
A composição também apresenta uma menor dependência de implementações e temos cada classe focada em apenas uma tarefa seguindo outro principio da responsabilidade única, também tem um bom encapsulamento onde os detalhes internos dos objetos instanciados não são visíveis
A grande desvantagem é que um software muito dinâmico e parametrizado é mais difícil de entender do que software mais estático
Os padrões de projeto fornecem uma terminologia padrão e são específicos para um determinado cenário
O aprendizado desses padrões ajuda os desenvolvedores inexperientes a aprender o design de software de maneira fácil e rápida
Padrões Estruturais
Esses padrões de design dizem respeito à classe e à composição do objeto. O conceito de herança é usado para compor interfaces e definir maneiras de compor objetos para obter novas funcionalidades;
Adapter / Adaptador
O padrão do adaptador funciona como uma ponte entre duas interfaces incompatíveis. Esse tipo de padrão de design se enquadra no padrão estrutural, pois combina a capacidade de duas interfaces independentes, envolve uma única classe responsável por unir funcionalidades de interfaces independentes ou incompatíveis
Bridge / Ponte
É usado quando precisamos separar uma abstração de sua implementação para que as duas possam variar independentemente.Envolve uma interface que atua como uma ponte que torna a funcionalidade de classes concretas independente das classes do implementador de interface
Filter / Filtro
O padrão de filtro ou Criteria é um padrão de design que permite aos desenvolvedores filtrar um conjunto de objetos usando diferentes critérios e encadeando-os de maneira dissociada por meio de operações lógicas
Composite / Composição
usado onde precisamos tratar um grupo de objetos de maneira semelhante a um único objeto. O padrão compõe objetos em termos de uma estrutura em árvore para representar parte e toda a hierarquia. Cria uma classe que contém um grupo de seus próprios objetos. Esta classe fornece maneiras de modificar seu grupo dos mesmos objetos
Decorator / Decorador
permite que um usuário adicione novas funcionalidades a um objeto existente sem alterar sua estrutura. Esse padrão cria uma classe decoradora que agrupa a classe original e fornece funcionalidade adicional, mantendo intacta a assinatura dos métodos de classe;
Facade / Fachada
oculta as complexidades do sistema e fornece uma interface para o cliente usando a qual o cliente pode acessar o sistema. envolve uma única classe que fornece métodos simplificados exigidos pelo cliente e delega chamadas para métodos de classes de sistema existentes
Flyweight
é usado principalmente para reduzir o número de objetos criados, diminuir o espaço ocupado na memória e aumentar o desempenho. tenta reutilizar objetos do tipo semelhantes já existentes, armazenando-os e cria um novo objeto quando nenhum objeto correspondente é encontrado
Proxy
uma classe representa a funcionalidade de outra
classe, cria-se um objeto que possui o objeto original
para fazer interface de sua funcionalidade com o mundo exterior
-
-
Front Controller
-
O padrão de design Front Controller é usado para fornecer um mecanismo centralizado de tratamento de solicitações, para que todas as solicitações sejam tratadas por um único manipulador; • Esse manipulador pode fazer a autenticação/autorização/log ou rastreamento de solicitação e depois passar as solicitações para os manipuladores correspondentes