Quelle est la différence entre un Algorithme et un Modèle de Conception

je cherchais" Undo/Redo algorithms "et j'ai trouvé quelque chose marqué comme un duplicata, mais le duplicata était une requête pour un"design Pattern Undo". J'aimerais vraiment un algorithme pour cette. Je ne pense pas que j'ai nécessairement besoin d'un motif.

y a-t-il une différence fondamentale entre "Design Pattern" et "Algorithm" ou est-il correct que quelqu'un utilise les deux de façon interchangeable?

je raccroche et j'enlève ma réponse.

OK, pardonnez-moi de penser que les modèles de design n'étaient que des abstractions d'algorithmes. Voici un petit tableau de mes conclusions des réponses qui étaient toutes très bonnes.

   Design Pattern      |      Algorithm
----------------------------------------------
Abstract               |Concrete
Control Structure      |Set of Actions     
Template               |
OOP                    |Structured / OO Programming
Flexible               |Deterministic 
Architecture(blueprint)|Recipe
20
demandé sur Peter Turner 2009-02-17 23:50:59

12 réponses

un algorithme est comme une recette: un processus étape par étape pour effectuer une activité.

Un modèle de conception est comme un programme: une collection structurée d'objets et d'associations et d'actions à accomplir un but.

24
répondu Steven A. Lowe 2017-03-17 07:26:35

Oui, il y a une différence.

an algorithme est une recette pour effectuer une tâche - un ensemble fini sans ambiguïté d'instructions qui atteint un certain but en agissant sur une entrée et en produisant une sortie. Typiquement, un algorithme est exprimé dans un pseudo-code de langage agnostique, qui peut ensuite être implémenté dans la langue de votre choix.

Un modèle de conception est une façon de structurer votre code afin d'exprimer avec élégance une relation entre des composants fonctionnels. Vous pouvez utiliser des modèles de conception dans l'implémentation d'un algorithme. Par exemple, vous pouvez utiliser un algorithme pour une commande à pied d'un arbre pour s'assurer que vous visitez tous les nœuds d'un arbre de structure de données dans un certain ordre. Vous pouvez également implémenter un visitor Design pattern pour exprimer comment votre implémentation renvoie le contrôle au contexte appelant pour indiquer qu'un noeud a été visiter. Cela ne fait pas partie de l'algorithme, mais fait partie de la conception du logiciel, et de la façon dont vous structurez les interfaces que chaque composante de votre logiciel peut utiliser.

les algorithmes et les modèles de conception sont orthogonaux, bien qu'ils puissent tous les deux être utilisés en même temps.

17
répondu HenryR 2009-02-17 20:58:19

un modèle de conception est une description relativement vague de la façon de résoudre un problème au niveau architectural, en mettant l'accent sur la flexibilité et la maintenabilité. Un algorithme est une description précise de la façon de calculer quelque chose de spécifique, avec un accent sur l'exactitude et l'efficacité.

7
répondu dsimcha 2009-02-17 20:55:36

un dessin ne peut pas être directement traduit en code. C'est une "stratégie" qui peut être utile pour la conception d'une application. L'origine du terme est externe à l'informatique. Pour en savoir plus, lisez à propos de Christopher Alexander .

un algorithme de l'autre côté peut être exprimé en code. C'est une séquence d'opérations permettant de résoudre un problème spécifique pour toute entrée.

2
répondu kgiannakakis 2009-02-17 20:57:58

Un algorithme est un ensemble d'étapes/actions/commandes/instructions de travail dans l'ordre de votre/dans tous les circonstances ou les changements d'état. Dans le cas d'undo/redo, cela impliquerait de stocker l'état précédent à chaque jonction et ensuite de le reproduire (par n'importe quel moyen dont dispose l'application) sur commande. Mais puisque cette définition est tellement floue et chaque cas particulier est différent, nous aimons créer un modèle de conception plus généralisée dans laquelle la fonctionnalité d'une application spécifique peut être branchée.

un motif de dessin est un concept plus abstrait qui existe dans la programmation orientée objet à la suite de l'encapsulation des objets de leurs valeurs internes et de leur fonctionnement et du polymorphisme permettant des comportements potentiellement différents des appels de" même " fonction. Tout cela permet de construire une structure de contrôle dans l'interaction des objets plutôt que dans une structure algorithmique comme une boucle ou un conditionnel, et peut être beaucoup plus simple puisque vous n'avez pas besoin pour connaître les détails d'un objet pour le faire fonctionner - vous devez seulement savoir que l'objet fonctionne. Dans le cas d'undo/redo, il peut y avoir des objets pour se souvenir de l'État, pour reproduire l'état, et pour gérer le contrôle. Ils communiqueraient les uns avec les autres en appelant les méthodes/fonctions, qui traiteraient chacun leur propre partie de la fonctionnalité.

les termes ne sont pas interchangeables parce qu'ils se rapportent à différents niveaux de conception, et DP's in particulier ne sont qu'une partie de la programmation orientée objet.

2
répondu notnot 2009-02-17 21:40:21

je dirais qu'un modèle de conception définit la structure, alors qu'un algorithme définit le comportement.

par exemple, vous pouvez utiliser plusieurs algorithmes différents en conjonction avec le schéma de conception de stratégie .

1
répondu Dan Dyer 2009-02-17 20:55:37

un algorithme est un ensemble spécifique de mesures pour effectuer une tâche. Le décodage d'un fichier audio ou vidéo utiliserait un algorithme.

un dessin est plus d'un modèle pour concevoir un système avec certaines caractéristiques.

1
répondu Dana Holt 2009-02-17 21:00:04

quand j'ai étudié le concept de dessin pour la première fois, j'ai également été surpris pourquoi les dessins de conception ont été introduits en présence de l'algorithme. Comme mes connaissances ont augmenté avec les modèles de conception, je suis arrivé à ce point que l'algorithme est une approche entièrement différente pour résoudre les problèmes et le modèle de conception est différente.

modèle de conception est fondamentalement une solution récurrente du même problème pour une application logicielle dans un contexte particulier qui est d'une façon ou d'une autre non lié avec algo, parce que l'algorithme est les instructions étape par étape pour résoudre le problème.

1
répondu Mazhar Bukhari 2012-09-28 12:33:33

un modèle de conception déterminerait comment vous concevez un algorithme (ou peut-être n'avez rien à voir avec les algorithmes, mais disons qu'il s'agit d'un algorithme qui le fait), alors qu'un algorithme sera un ensemble d'étapes solides, répétables, implémentables, pour faire quelque chose. Donc, non, je ne les appelez pas interchangeables.

0
répondu Bernard 2009-02-17 20:53:41

Comment s'organiser types de fonctions plutôt que les caractéristiques spécifiques pourraient être la clé pour séparer les "design patterns" de 'algorithmes'...

modèles de Conception de décrire les solutions génériques à la commune des problèmes de conception. "Chaque patron décrit un problème qui se produit à maintes reprises dans notre environnement, et décrit ensuite le cœur de la solution à ce problème, de telle façon que vous pouvez utiliser cette solution des millions de fois, sans jamais doing it the same way twice" ( Christopher Alexander ) dans la programmation, ceci est fait en décrivant des ensembles spécifiques de relations entre des objets logiciels (se tenant debout pour des objets conceptuels ou du monde réel). La description de la mise en œuvre spécifique doit être évitée, car elle rend le modèle de conception moins générique.

Un algorithme est un ensemble d'étapes qui définissent la façon dont une tâche est exécutée. L'exécution de chaque étape de l'algorithme ne nécessite pas de créativité compétence. Elle exige plutôt seulement la capacité de suivre des directives. (avertissement: les algorithmes non-déterministes, ne se conforment pas à cette restriction et sont un important sujet de recherche)

donc, je pense qu'une description de la relation pourrait être de séparer les caractéristiques des fonctions. Toutefois, l'ensemble des caractéristiques d'un objet détermine sa fonction puisque chaque sous-caractéristique comporte des fonctions encapsulées. Quand vous assemblez beaucoup de petits objets en un plus grand certains d'entre eux vont travailler ensemble pour créer de nouvelles fonctions qu'ils n'avaient pas par eux-mêmes (le tout est plus grand que la somme de ses parties). Vous pouvez dire que c'est juste un nouvel algorithme, mais c'est aussi un nouvel objet. Les caractéristiques et les fonctions sont les deux faces d'une même pièce, il est donc impossible de les séparer complètement. Mais comment organiser types de caractéristiques plutôt que des caractéristiques spécifiques pourrait être la clé pour séparez les ' modèles de conception 'des' algorithmes ' car si les modèles de conception concernent l'organisation de caractéristiques spécifiques, c'est-à-dire d'instances de classes spécifiques, alors l'algorithme aurait déjà été présenté et l'implémentation serait exactement la même à chaque fois, c'est-à-dire qu'il ne serait pas générique et vous ne pouvez pas "utiliser cette solution un million de fois, sans jamais le faire de la même manière deux fois".

0
répondu Kriss 2014-08-06 04:38:58

modèles de Conception: - une solution à une commune, mais le problème générique. - solution générale au problème général. - doivent souvent être mis en œuvre chaque fois qu'il est utilisé.

algorithme: - ensemble spécifique d'étapes que vous pouvez suivre pour répondre à un problème particulier. - mis en œuvre directement pour résoudre un problème spécifique.

0
répondu Hussain Almarhoon 2016-10-22 03:31:48