Quand utiliser quel modèle de conception? [fermé]

104

J'aime beaucoup les modèles de conception, mais j'ai du mal à voir quand je peux en appliquer un. J'ai lu de nombreux sites Web où les modèles de conception sont expliqués. Je comprends la plupart d'entre eux, mais je trouve difficile de reconnaître un modèle dans mes propres situations.

Alors, c'est pourquoi je pose cette question. Y a-t-il des directives / sonnettes d'alarme quand utiliser quel modèle de conception.

Par exemple, si vous effectuez une instruction switch pour déterminer quel objet vous devez créer, vous souhaiterez probablement utiliser le modèle de conception d'usine. Donc, l'instruction switch dans ce cas est une «cloche d'alarme» pour utiliser le modèle Factory.

Alors, connaissez-vous plus de «sonnettes d'alarme» pour déterminer un modèle de conception?

Martijn
la source
6
Habituellement, les descriptions de modèle que je vois incluent une description des situations dans lesquelles vous voudriez ce modèle de conception.
R. Martinho Fernandes

Réponses:

99

Habituellement, le processus est l'inverse. N'allez pas à la recherche de situations où utiliser des modèles de conception, recherchez du code qui peut être optimisé. Lorsque vous avez du code que vous pensez qu'il n'est pas structuré correctement. essayez de trouver un modèle de conception qui résoudra le problème.

Les modèles de conception sont destinés à vous aider à résoudre des problèmes structurels, n'allez pas concevoir votre application uniquement pour pouvoir utiliser des modèles de conception.

Joep Killaars
la source
23
Non seulement des problèmes structurels, mais aussi des problèmes de comportement et de création.
DevDemon
1
Les modèles de conception peuvent accélérer le processus de développement en fournissant des paradigmes de développement testés et éprouvés. Une conception de logiciel efficace nécessite de prendre en compte les problèmes qui peuvent ne devenir visibles que plus tard dans la mise en œuvre. La réutilisation des modèles de conception permet d'éviter les problèmes subtils qui peuvent causer des problèmes majeurs et améliore la lisibilité du code pour les codeurs et les architectes familiers avec les modèles.
SaddamBinSyed
5

Apprenez-les et lentement, vous serez en mesure de vous reconnaître et de savoir quand les utiliser. Commencez par quelque chose de simple comme le motif singleton :)

si vous souhaitez créer une instance d'un objet et une seule. Vous utilisez le modèle singleton. Disons que vous créez un programme avec un objet options. Vous n'en voulez pas plusieurs, ce serait idiot. Singleton s'assure qu'il n'y en aura jamais plus d'un. Le modèle Singleton est simple, très utilisé et vraiment efficace.

Peter Rasmussen
la source
17
Le singleton n'est pas vraiment pour quand vous n'avez besoin que d'une seule instance. Singleton est utilisé lorsque vous devez vous limiter à une seule instance. Lorsque vous n'avez besoin que d'une seule instance, vous pouvez simplement essayer de créer une seule instance et de l'utiliser.
R. Martinho Fernandes
De plus, bien que singleton soit très utile et nécessaire à certains endroits, c'est aussi un modèle très facile à implémenter lorsqu'il n'est pas nécessaire. Comme vous l'indiquez ici, et comme l'a souligné Fernandes, vous n'en avez probablement pas besoin. En fait, l'utilisation d'un modèle singleton est un bon signe d'odeurs de code possibles (probablement). Son utilisation pour une classe de service est plus que probable une odeur de code. On dirait que vous avez besoin de DI, pas de singleton. Certaines personnes les utilisent de cette façon. Surtout pour les petits codes (sans importance) ou les POC. Mais comme je l'ai dit, il existe des utilisations efficaces. Ne trouvez pas un moyen facile de faire quelque chose et faites-le simplement.
Suamere
4

Je suis entièrement d'accord avec @Peter Rasmussen.

Les modèles de conception fournissent une solution générale aux problèmes de conception courants.

Je voudrais que vous suiviez l'approche ci-dessous.

  1. Comprendre l'intention de chaque modèle
  2. Comprendre la liste de contrôle ou le cas d'utilisation de chaque modèle
  3. Pensez à une solution à votre problème et vérifiez si votre solution s'inscrit dans la liste de contrôle d'un modèle particulier
  4. Sinon, ignorez simplement les modèles de conception et écrivez votre propre solution.

Liens utiles:

sourcemaking : Explique magnifiquement l' intention , la structure et la liste de contrôle dans plusieurs langages, y compris C ++ et Java

wikipedia : explique la structure, le diagramme UML et des exemples de travail dans plusieurs langages, y compris C # et Java.

La liste de contrôle et les règles de base dans chaque modèle de conception de sourcemakding fournissent la cloche d'alram que vous recherchez.

Ravindra babu
la source