Giter Club home page Giter Club logo

designpatterns_csharp-1's Introduction

LV.DesignPatterns_CSharp

Este é um projeto básico que contem vários padrões de projetos que visa exemplificar e mostrar a aplicabilidade dos padrões em seu uso em soluções do dia a dia.

Criado por mim, Lucas Vinicius, segue abaixa a explicação dos padrões existentes no projeto.:

1 - Criação

Factory Method: Tem como objetivo criar uma instância de um objeto.

Exemplo: Criar a instância de uma montadora, FIAT, FORD, Volkswagen
através de um enum

Abstract Factory: Tem como objetivo criar familia de objetos.

Exemplo: Criar uma familia carror de uma montadora, FIAT, FORD, Volkswagen
através de um tipo.

Builder: Tem como objetivo criar objetos complexos definindo ordem de criação dos objetos.

Exemplo: Criar um objeto carro, e o builder irá criar o motor, chassis e os pneus.

Prototype: Tem como objetivo criar objeto apartir de si mesmo, ele vai realizar uma cópia de si mesmo e retornar para o novo objeto.

Exemplo: Criar um objeto Pai ou Filho e criar um objeto a sua semelhança.

Singleton: Garantir que uma classe tenha somente uma instância e fornece um ponto global de acesso para a mesma.

Exemplo: Criar instância para acesso ao Banco de Dados.

2 - Estrutural

Adapter: Tem como objetivo comunicação entre interfaces incompativeis, permitindo que interfaces incompatíveis trabalhem em conjunto o que, de outra forma, seria impossível.

Exemplo: Temo uma API(Terceiros), e vamos criar um adapter para realizar essa comunicação entre elas.

Bridge: Tem como objetivo separar a implementação da abstração, de modo que as duas possam variar independentemente.

Exemplo: Cartao de credito e a forma de pagamento, vamos escolher a forma de pagamento e escolher o cartao.

Composite: Tem como objetivo criar uma classe base que contém toda a interface necessária para todos os elementos e criar um elemento especial que agrega outros elementos.

Exemplo: Criar um Formulario e seus objetos, todos os objetos são tratados da mesma forma.

Decorator: Tem como objetivo de agregar dinamicamente responsabilidades adicionais a objetos.

Exemplo: Utilizando Repositorios, foi decorado o repositorio e adicionado o commitADO.

Facade: Tem como objetivo interface unificada para um conjunto de interfaces em um subsistema, para ser mais fácil de user usada.

Exemplo: Inicializar os serviços de um telefone, apenas com o metodo de inicialização.

Proxy: Tem como objetivo agregar funcionalidades ao objeto ou marcador da localização de outro objeto para controlar o acesso a esse objeto.

Exemplo: Adicionar uma validação antes de executar o acesso ao banco de dados.

3 - Comportamentais

Strategy: Tem como objetivo definir uma estratégia para executar determinada ação, Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam.

Exemplo: Calcular a faixa salarial do funcionario, baixa, media ou alta;

Iterator: Tem como objetivo fornecer um meio de acessar, sequencialmente, os elementos de um objeto agregado sem expor sua representação subjacente.

Exemplo: Listando uma objeto de equipe sem saber sua implementação.

TemplateMethod: Tem como objetivo representar as variações nos comportamentos da estrutura de classe.

Exemplo: Corrigir provas, de matematica e de portugues, o ator é o mesmo o comportamento é diferente em cada classe.

Observer: Tem como objetivo definir uma dependência um para muitos entre objetos, de maneira que quando um objeto muda de estado todos os seus dependentes são notificados e atualizados automaticamente.

Exemplo: Simular uma roleta de onibus, quando o cartao passa na maquina ele notifica a roleta e libera ela.

Mediator: Tem como objetivo definir um objeto que encapsula a forma como um conjunto de objetos interage.

Exemplo: Mediador entre dois objetos que irão se comnunicar.

Commnad: Tem como objetivo encapsular a chamadar de comandos e enfileirar chamadas e pondendo ser desfeitas.

Exemplo: Validação entre cliente e server.

Memento: Tem como objetivo sem violar o encapsulamento, capturar e externalizar um estado interno de um objeto, de maneira que o objeto possa ser restaurado para esse estado mais tarde.

Exemplo: Criar uma ide para armazer o ultimo texto digitado e assim poder recupera a ultima informação digitada.

Chain Of Responsibility: Tem como objetivo evitar o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar a solicitação. Encadear os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate.

Exemplo: Validação de formulário (Cliente, Servidor e Banco de dados)

State: Tem como objetivo definir um estado para um determinado objeto com intuito de representar o seu estado atual.

Exemplo: Representar o estado de duas pessoas. (Correndo, Parada ou Atirando).

designpatterns_csharp-1's People

Contributors

lucasviniciuspereira avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.