12
votes

Les modèles de conception sont-ils spécifiques à la langue ou à la technologie?

question là-bas est que des modèles de conception sont spécifiques à une langue ou à une technologie de programmation,

Comme si vous pouvez faire un motif composite uniquement dans C #, Java mais pas dans VB6.0.L'on est vrai, si oui que ce que quels sont les modèles qui ne peuvent pas être mis en œuvre avec des langages de programmation orientés objet.


0 commentaires

10 Réponses :


3
votes

Je pense que cela dépend de quelles caractéristiques de la langue sont à votre disposition, mais non, je ne dirais pas que les modèles de conception sont contraints de langues particulières.


0 commentaires

0
votes

Non, ils ne sont pas. Ils sont une abstraction qui peut être appliquée aux langues orientées objet en général.


1 commentaires

Les autres paradigmes de programmation ont leurs propres modèles de conception. Ce n'est pas juste oop.



6
votes

Les motifs dépendent des langages de programmation, mais pas aussi fort que votre question suggère. Par exemple, Itérateur est un motif de conception, cependant dans de nombreuses langues (C ++, Java, C #), il fait partie de la langue (OK, la bibliothèque de la classe).

Il y a plusieurs modèles qui peuvent être appelés orientés objet, c'est-à-dire qu'il est difficile de les mettre en œuvre sans classes, héritage et polymorphisme appropriés. Exemples: Factory abstrait, stratégie, Modèle de modèle. Cependant, même ceux-ci pourraient être effectués par ex. C, si quelqu'un voulait vraiment. Ceci est possible car c a des pointeurs de fonction. Je serais très pressé pour imaginer une mise en œuvre des modèles ci-dessus dans une langue non oo sans support de pointeur (ou équivalent). Là encore, je suppose que ces modèles n'auraient aucun sens dans une telle langue ...


2 commentaires

En tant que corollaire, la plupart des modèles de conception sont des remplacements efficaces pour les caractéristiques absentes de la langue. La stratégie et la commande, par exemple, sont des solutions de contournement pour un manque de fonctions de première classe. L'exemple de stratégie de rubis de Wikipedia avec des blocs illustre parfaitement ce point (en gardant à l'esprit que les blocs ne sont qu'une syntaxe spéciale pour les fonctions anonymes). Composite est une solution de contournement pour un manque de fonctions génériques, comme illustré par l'exemple de Wikipedia dans la LISP commune. Je soupçonne que l'on pourrait correspondre à la plupart des modèles de conception à une caractéristique linguistique de cette manière.


Article perturbateur de Mark Dominus illustrant @ Zak's Point - blog.plover.com/prog/design -patterns.html



0
votes

La plupart des modèles sont indépendants de la langue. Pour certains modèles et langues, le principal hacky est nécessaire. Par exemple, Windows Com est une implémentation bizarre de modèle composite dans la langue C (non c ++).

Certaines langues comme VB 6.0 mettent en place des obstacles majeurs à sauter pour mettre en œuvre des modèles, ce qui ne valait donc pas la peine d'effort.


0 commentaires

0
votes

oui et non. Certains modèles de conception ne sont pas spécifiques à des langues particulières, mais il peut y avoir des modèles de conception spécifiques aux classes de langues.

Par exemple, il peut y avoir des modèles de conception fonctionnels spécifiques aux langages fonctionnels ou aux modèles de conception orientés objet spécifiques aux langues orientées objet. Certains chevauchements peuvent exister, mais ce n'est pas à 100%.


0 commentaires

4
votes

Les motifs de conception ne sont pas spécifiques de la langue en soi, mais certains modèles peuvent être spécifiques paradigmes, par exemple la mise en œuvre d'un modèle singleton en C n'a aucun sens que vous pourriez aussi bien écrire un ancien module uni.

Cependant, les modèles de conception ne sont pas spécifiques à la langue, mais peuvent être plus utiles ou plus de sens dans différents paradigmes (OO VS structurée VS fonctionnelle)


1 commentaires

C'est la meilleure réponse. La distinction entre les langues et les paradigmes est la clé et d'autres réponses semblent manquer de ce point. Remarque Le livre GOF indique "Logiciel orienté objet" sur la couverture. Il ne devrait pas être de surprise si les motifs ne s'appliquent pas à la programmation fonctionnelle!



0
votes

Ceci est pour donner une réponse simple.

D'un côté Certains modèles sont dépendants de la langue, des motifs tels que l'usine, la stratégie et le modèle reposent sur des mécanismes de langue comme le polymorphisme et l'héritage.

D'autre part, certains modèles existent parce que la langue que nous utilisons n'a pas la fonctionnalité droite (exemple: le motif de visiteur est utilisé pour compenser le manque de double envoi dans des langues comme Java et C ++).


0 commentaires

8
votes

Parmi les modèles classiques «gang de quatre», quelques-uns sont spécifiques à la langue. D'autres, comme le visiteur, sont vraiment utiles que dans un cadre orienté objet. Langue fonctionnelle ont pli (catamorphismes) au lieu de visiteur, et quiconque tente d'utiliser un visiteur dans une langue fonctionnelle serait considéré comme une lunatique dangereuse. Enfin, il y a des motifs qui pourraient être appliqués dans n'importe quelle langue, comme l'usine.

Une des raisons pour lesquelles je ne suis pas un grand fan du mouvement des motifs telle que pratiquée par Gamma et al est que la vue du modèle manque de cohérence intellectuelle. "Quelque chose d'utile" est une appréciation agréable, mais pas, comme vous le respectez, donnez beaucoup de conseils quant à quels schémas pourraient toujours être utiles lorsque la langue ou le paradigme change.

Pour une illustration des risques inhérents aux modèles de classification, consultez l'une de mes collections préférées: Kent Beck's SmallTalk Meilleures pratiques modèles . Malgré le travail "Smalltalk" dans le titre, de nombreux programmeurs ont trouvé ces modèles applicables à des langues telles que Java et Python.


1 commentaires

Aucun des modèles GOF n'est spécifique à la langue. " Tous peuvent être mis en œuvre dans des langues orientées objet standard, " (préface p. XI). D'autre part, Tous Les modèles de GOF sont spécifiques au paradigme, d'où le sous-titre du livre " éléments du logiciel réutilisable orienté objet ".



0
votes

Les modèles de conception ne sont pas intrinsèquement spécifiques à la langue, bien que certains modèles soient plus utiles dans certaines langues que d'autres.


0 commentaires

0
votes

Les modèles de conception ont tendance à être spécifiques à un paradigme de programmation particulier. Dans la mesure où beaucoup (la plupart?) Langues prennent en charge plusieurs paradigmes, un modèle de conception donné peut s'appliquer à des langages assez disparates.

  1. Premièrement, notez que la la facilité de la mise en œuvre d'une donnée donnée modèle dans différentes langues peut varier sauvagement, en fonction de la caractéristiques de chaque langue.
  2. Deuxièmement, notez qu'un motif peut être si utile / populaire / nécessaire pour qu'un langage implémente directement la nécessité de les développeurs.

    Alors qu'est-ce qu'un motif spécifique à la langue appelé? Les modèles de mise en œuvre sont souvent appelés idioms .
    Voir: https://softwareEngineering.stackexchange.com/questions/106815/Difefence- entre-iiom-and-design-motif .


0 commentaires