Modelos de design para iniciantes

Publicados: 2016-01-13

Se você já escreveu programas para produtos ou aplicativos de software, grandes/pequenos, provavelmente já usou muitos Design Patterns… embora seja possível que eles não sejam um dos padrões de design mais usados/padrão.

Mas sim, existe uma diferença óbvia entre implementar um padrão de projeto e “usar” um padrão de projeto… de qualquer forma, a pessoa que trabalha com padrões de projeto o entende, ou o entenderá facilmente.

O ponto é que os padrões de design não são novos para os programadores.

Neste artigo abaixo, estou tentando explicar padrões de projeto, em seu básico, e estudaremos detalhes de vários padrões, exemplos, etc. em outro artigo.

O que é um padrão de projeto?

Começar…

Acho que a melhor maneira de começar a entender os padrões de design é entender os padrões não técnicos que seguimos conscientemente / inconscientemente em nossas vidas cotidianas.

Por exemplo, vamos pegar muitos currículos enviados para uma vaga de emprego. O currículo de todo mundo não parece o mesmo... embora todos eles tendam a fazer a mesma coisa, que é dizer ao leitor em que eles são qualificados, ou como ele pode ser adequado para o trabalho.

A maioria dos que enviam currículos para empregos sabem que precisam enviar um currículo com um determinado conjunto de informações em um documento do Word formatado.

Isso… é um padrão, que todo mundo envia um currículo com um determinado conjunto de informações expressas nele.

Se você quiser… chame-o de Modelos em vez de Padrões. Modelos de Design.

Existem muitas dessas coisas na vida real que são padrões. Algumas pessoas gostam dos exemplos abaixo:

Todos os chefs de todo o mundo cozinham pizza ou batatas fritas da mesma maneira. Embora eles possam cobrir / dar sabor de maneira diferente. Isso é um padrão.

O design de cada carro segue um padrão básico de design, quatro rodas, volante, o sistema de acionamento central, como acelerador-breve-embreagem, etc.

Todas as coisas repetidamente construídas/produzidas, inevitavelmente seguirão um padrão em seu design… sejam carros, pizzas, caixas eletrônicos, seja o que for… até escova de dentes.

Projetos que quase se tornaram a maneira padrão de codificar alguma lógica/mecanismo/técnica em software, por isso passam a ser conhecidos como – e, portanto – estudados como Padrões de Projeto de Software.

Por que um padrão de design é importante?

Basicamente por dois motivos:

  1. Para manter um padrão
  2. Para acelerar o desenvolvimento

Vou explicar em detalhes.

Em primeiro lugar, vemos porque é interessante aderir a um padrão padrão.

Vamos pegar o exemplo da lista de currículos que discutimos antes.

Pode haver um ou dois candidatos que enviam seus pedidos de emprego por texto de e-mail sem a formatação adequada, sem anexos ao e-mail etc., .. esses um ou dois candidatos não estão seguindo o padrão .. e NÃO é provável que acabem com o trabalho…. porque? Porque eles estão se desviando de um padrão bem estabelecido, que pode não ser apreciado pelas pessoas que selecionam currículos para o trabalho.

Não há ninguém que se desvie do padrão e se torne “legal”? Isso não é inovação?

Sim, há momentos em que um currículo apresentado de forma muito diferente consegue o emprego por ser diferente dos outros. Normalmente, ouvi falar de web designers que conseguiram empregos de primeira porque compilaram e apresentaram um filme em CD de seu trabalho, ou fizeram um personagem de animação explicando seu trabalho, colocaram em seu blog e coisas assim.

Mas... isso é experimentação (a inovação vem de experimentos bem-sucedidos ).

Na maioria das vezes, no desenvolvimento de software, você não pode experimentar, por causa da pressão da linha do tempo, expectativas, etc., mas sim, às vezes, alguns projetos interessantes permitem alguma experimentação.

No software, não podemos fazer coisas básicas como um Depósito Bancário… de 101 maneiras… haverá apenas algumas maneiras de processar um Depósito Bancário… então faz sentido seguir um Padrão estabelecido e testado.

Além disso, a maioria dos padrões de design tem variações... algumas das variações são tão populares que as variações também serão um novo tipo padrão do padrão.

Espera-se que os projetos de software nos dias de hoje (pelo menos implicitamente) sigam um design já estabelecido de um produto/software similar no mercado.

É aqui que aderir a um estilo padrão de codificação ou padrão de design ajuda o desenvolvimento de software… acelerando o desenvolvimento, removendo a sobrecarga de se preocupar com uma nova implementação não testada, etc.,

Tempo de desenvolvimento de fixação

Seguir um padrão de design padrão também tem a vantagem de se comunicar facilmente através da árvore / hierarquia de arquitetos de software, líderes de módulo, líderes de equipe, desenvolvedores etc., sobre “como” algo precisa ser desenvolvido, e não apenas “o que” deve ser desenvolvido.

Às vezes, isso até ajuda as equipes de teste, porque os testadores saberiam por experiência que o código seguindo um padrão de design específico provavelmente poderia ser testado de uma maneira específica com um conjunto de ferramentas de teste em um determinado período de tempo, e esses designs conhecidos podem não ter algumas falhas ou tem algumas falhas 'conhecidas'.

O uso de padrões de design não tira um toque pessoal?

Não. Em primeiro lugar, porque não estamos dizendo que você segue um padrão de design e nada mais acontece. A maioria das implementações de projetos compartilha apenas requisitos básicos com outros projetos e provavelmente terá desvios. Construir esses desvios exigirá a flexibilidade e o alongamento dos padrões padrão usados ​​em uma implementação.

É como fazer a pizza da maneira padrão, depois temperá-la / apresentá-la a diferentes requisitos, como uma pizza de torta completa, uma torta cortada ou qualquer outra coisa.

Ao entender a importância dos padrões de projeto, uma coisa é muito importante :

Os Padrões de Design não são nenhuma tecnologia ou estrutura que uma determinada empresa ou linguagem de programação nos impõe. Isso significa que é como um conceito aberto. Você é livre para pegá-lo, usá-lo, modificá-lo de acordo com suas necessidades e, principalmente, senti-lo como seu.

Todos os padrões de design padrão ou populares, na verdade, são bastante extensíveis. Eles se tornaram populares, em primeiro lugar, apenas porque muitas pessoas o usam.. e muitas pessoas o usam apenas porque são flexíveis aos seus requisitos.

Ou como você acha que um padrão de design padrão se encaixaria em um projeto em Nova Jersey para uma empresa e também em Bangalore para uma empresa diferente e um tipo diferente de projeto.

Isso nos leva a “ A maioria dos padrões de projeto são Genéricos ”… o que significa que eles nem sempre são usados ​​para construir o mesmo tipo de software. Você pode não ouvir coisas como "Padrão de design de software bancário" ou "padrão de design de software de rede social" usado em discussões comuns... mas apenas "Padrões de design".

Quem deve se preocupar com padrões de design?

  1. Assim como um bom arquiteto de edifícios desenvolve suas habilidades de projetar edifícios, estudando a arquitetura e o design de vários edifícios e formas ao longo de sua vida, um arquiteto de software deve estudar e visualizar como diferentes sistemas de software / tecnologia em todo o mundo são projetados ou arquitetado.
  2. E assim como os trabalhadores da construção de um edifício devem estar cientes das diferentes formas de implementação de um projeto de construção, seja por experiência própria ou entendendo-o do Arquiteto do Edifício.

Desenvolvedores/programadores de software devem entender os padrões básicos de projeto de software e seu código de implementação... eles mesmos ou do Arquiteto de Software que instrui a equipe a desenvolvê-lo seguindo um padrão específico.

Padrões básicos de código

Nas linhas de abertura deste artigo, eu disse que qualquer programador teria usado padrões de projeto. Aqui estão alguns exemplos muito básicos de código seguindo um padrão.

  1. A seguir está um padrão de projeto básico de Filtro de Interceptação .
  2. Ocultar código de cópia
  3. [código]
    interruptor (condição){
    Caso Valor1:
    Caso Valor2:
    predefinição:
    }
    [/código]
  4. Gatilhos de eventos, manipuladores de eventos... estão sob o padrão básico de projeto Subject-Observer . Discutiremos cada padrão de padrões, variações populares, com exemplos... em breve.
  5. Se você usou algum tipo de coleção, como Arraylist em C#, e iterou através da matriz, então você usou um padrão de design Iterator básico.
  6. O código abaixo é um exemplo de um padrão básico de manipulação de exceção/ cadeia de responsabilidade .
  7. Ocultar código de cópia
  8. [código]
    experimentar{
    }catch(Exceção ex){
    }
    finalmente{
    }
    [/código]

Diferentes áreas de padrões de design

Existem diferentes terminologias em software além de Design Patterns. Algumas delas frequentemente relacionadas a Design patterns que discutimos até agora... e algumas delas totalmente não relacionadas.

O que discutimos até agora é às vezes chamado de “ Padrões de Projeto de Implementação ”.

Existem outros, como Architecture Patterns, Framework Patterns, Language Patterns (principalmente chamados de Language Constructs).

São padrões colocados em diferentes níveis... como Padrões de linguagem são padrões implementados como parte de linguagens de programação como C#/Java, como características/construções da linguagem. Alguns deles já vimos.

Todos os exemplos acima de observador de assunto, filtro de interceptação, etc., são absorvidos como construções de linguagem em todas as linguagens de programação de alto nível populares que vieram depois do C.

Padrões de arquitetura são aqueles modelos padrão de arquitetura de software, comumente referindo-se a diferentes métodos de colocação ou ligação de módulos ou camadas ou camadas, formando a aplicação completa.

Isso não está relacionado a padrões de design no sentido de codificação/programação que... mas eles compartilham as mesmas respostas para Por que / O que é discutido neste artigo.

Padrões de estrutura também não estão relacionados à nossa discussão sobre padrões de projeto. Quando estruturas como .NET implementam meios especiais para erros de log ou rotas de execução de código de rastreamento facilmente por meio de métodos ou objetos internos da estrutura, esses mecanismos são chamados de padrões de estrutura.

Alguns exemplos no .NET Framework incluem o recurso stackTrace, o recurso de atributo de classe com [] colchetes em cima das definições de classe/método etc. Ao usar esses recursos, estamos codificando com os padrões internos do Framework.

Espero que este artigo ajude a fornecer uma visão geral dos padrões de design e terminologias relacionadas.

Até agora, discutimos apenas quais são os padrões e quão importantes eles são... mas não discutimos o que são os padrões em si.

Licença

Este artigo, juntamente com qualquer código-fonte e arquivos associados, está licenciado sob a The Code Project Open License (CPOL).