Quando usar qual padrão de design? [fechadas]

104

Gosto muito de padrões de projeto, mas acho difícil ver quando posso aplicar um. Eu li muitos sites onde os padrões de design são explicados. Eu entendo a maioria deles, mas acho difícil reconhecer um padrão em minhas próprias situações.

Então, é por isso que faço esta pergunta. Existem orientações / sinos de alarme quando usar qual padrão de design.

Por exemplo, se você estiver executando uma instrução switch para determinar qual objeto você precisa criar, provavelmente deseja usar o padrão de design de fábrica. Portanto, a instrução switch neste caso é uma 'campainha de alarme' para usar o padrão de fábrica.

Então, você conhece mais 'campainhas de alarme' para determinar um padrão de design?

Martijn
fonte
6
Normalmente, as descrições de padrão que vejo incluem uma descrição das situações em que você deseja aquele padrão de projeto.
R. Martinho Fernandes

Respostas:

99

Normalmente, o processo é o contrário. Não procure situações onde usar padrões de design, procure códigos que possam ser otimizados. Quando você tem um código que você acha que não está estruturado corretamente. tente encontrar um padrão de projeto que resolva o problema.

Os padrões de projeto têm como objetivo ajudá-lo a resolver problemas estruturais, não crie seu aplicativo apenas para poder usar padrões de projeto.

Joep Killaars
fonte
23
Não apenas problemas estruturais, mas também problemas comportamentais e de criação.
DevDemon
1
Os padrões de design podem acelerar o processo de desenvolvimento, fornecendo paradigmas de desenvolvimento testados e comprovados. O design de software eficaz requer a consideração de problemas que podem não se tornar visíveis até mais tarde na implementação. Reutilizar padrões de design ajuda a evitar problemas sutis que podem causar problemas maiores e melhora a legibilidade do código para codificadores e arquitetos familiarizados com os padrões.
SaddamBinSyed
5

Aprenda-os e aos poucos você será capaz de reconhecê-los e descobrir quando usá-los. Comece com algo simples como o padrão singleton :)

se você deseja criar uma instância de um objeto e apenas UM. Você usa o padrão singleton. Digamos que você esteja fazendo um programa com um objeto de opções. Você não quer vários desses, seria bobagem. Singleton garante que nunca haverá mais de um. O padrão Singleton é simples, muito usado e muito eficaz.

Peter Rasmussen
fonte
17
O singleton não é realmente para quando você precisa de apenas uma instância. Singleton é para quando você precisa limitar a uma instância. Quando você precisa de apenas uma instância, pode tentar simplesmente criar apenas uma instância e usá-la.
R. Martinho Fernandes
Além disso, embora o singleton seja muito útil e necessário em alguns lugares, também é um padrão muito fácil de implementar quando não necessário. Como você insinuou aqui, e Fernandes apontou, provavelmente você não precisa. Na verdade, o uso de um padrão singleton é um bom sinal de possíveis (provavelmente) odores de código. Usá-lo para uma classe de serviço é mais do que provavelmente um cheiro de código. Parece que você precisa de DI, não de um singleton. Algumas pessoas os usam dessa forma. Especialmente para código pequeno (sem importância) ou POCs. Mas, como eu disse, existem alguns usos eficazes. Não encontre uma maneira fácil de fazer algo e apenas faça.
Suamere
4

Eu concordo totalmente com @Peter Rasmussen.

Os padrões de design fornecem uma solução geral para problemas de design que ocorrem comumente.

Eu gostaria que você seguisse a abordagem abaixo.

  1. Entenda a intenção de cada padrão
  2. Compreenda a lista de verificação ou caso de uso de cada padrão
  3. Pense na solução para o seu problema e verifique se sua solução se encaixa na lista de verificação de um padrão específico
  4. Caso contrário, simplesmente ignore os padrões de design e escreva sua própria solução.

Links Úteis:

criação de código - fonte : explica a intenção , a estrutura e a lista de verificação em várias linguagens, incluindo C ++ e Java

wikipedia : Explica a estrutura, diagrama UML e exemplos de trabalho em várias linguagens, incluindo C # e Java.

A lista de verificação e as regras básicas em cada padrão de design do sourcemakding fornecem o sino do Alram que você está procurando.

Ravindra babu
fonte