Lorsque nous lisons sur les modèles de conception sur Internet, nous notons qu'il existe 3 catégories:
- Créatif
- De construction
- Comportementale
Mais lorsque nous créons l'architecture d'un logiciel, nous pensons à MVP, MVC ou MVVM.
Par exemple, parmi les modèles de création, j'ai trouvé le modèle de singleton , mais j'ai également utilisé le singleton dans mon MPV.
Ma question est donc la suivante: un modèle de conception est-il une structure globale d'un produit?
Si oui, comment singleton peut-il être un modèle de conception? Parce que je peux l'utiliser n'importe où dans mon application. Fondamentalement, il est limité à la création d'une seule instance à la fois en mémoire, mais ce concept ne définit-il pas la conception du logiciel?
Sinon, où sont MVP, MVC et MVVM dans les trois catégories de modèles? Et quelle est la différence entre la conception et l'architecture de logiciel?
la source
Réponses:
Cela nécessite une explication détaillée mais je vais essayer d'esquisser les différences au mieux de ma connaissance.
Les modèles sont des points communs distillés que vous trouvez dans les programmes. Cela nous permet de déconstruire une grande structure complexe et de construire à l'aide de pièces simples. Il fournit une solution générale à une classe de problèmes.
Un grand logiciel complexe passe par une série de déconstruction à différents niveaux. À grande échelle, les modèles architecturaux sont les outils. À un niveau plus petit, les modèles de conception sont les outils et au niveau de la mise en œuvre, les paradigmes de programmation sont les outils.
Un modèle peut se produire à des niveaux très différents. Voir Fractales . Le tri rapide, le tri par fusion sont tous des modèles algorithmiques permettant d'organiser un groupe d'éléments dans un ordre.
Pour une vue des plus simplistes:
Les idiomes sont des techniques de programmation spécifiques au paradigme et au langage qui remplissent des détails de bas niveau.
Les modèles de conception sont généralement associés à des points communs au niveau du code. Il fournit divers schémas pour affiner et construire des sous-systèmes plus petits. Il est généralement influencé par le langage de programmation. Certains modèles pâlissent dans l'insignifiance en raison des paradigmes linguistiques . Les modèles de conception sont des tactiques à moyenne échelle qui étoffent une partie de la structure et du comportement des entités et de leurs relations.
Alors que les modèles architecturaux sont considérés comme des points communs à un niveau plus élevé que les modèles de conception. Les modèles architecturaux sont des stratégies de haut niveau qui concernent les composants à grande échelle, les propriétés globales et les mécanismes d'un système.
Comment les modèles sont-ils obtenus? À travers:
Si vous avez suivi les pensées ci-dessus. Vous verrez que Singleton est un "modèle de conception" tandis que MVC est l'un des modèles "architecturaux" pour gérer la séparation des préoccupations.
Essayez de lire:
la source
Les modèles de conception sont des modèles bien connus pour résoudre des problèmes techniques d'une manière qui a fait ses preuves à plusieurs reprises. Les modèles de conception sont des structures et des pratiques de conception courantes qui permettent de créer des logiciels orientés objet réutilisables. Les exemples de modèles de conception sont le modèle d'usine, le singleton, la façade, l'état, etc.
les modèles d'architecture sont des modèles bien connus pour résoudre les problèmes d'architecture d'application logicielle. L'architecture d'application logicielle est le processus de définition d'une solution structurée qui répond à toutes les exigences techniques et opérationnelles. L'architecture de l'application est l '«organisation» globale du code. Des exemples d'architectures différentes peuvent être MVC, MVVM, MVP, n-layer (c'est-à-dire UI-BLL-DAL), etc. L'architecture doit généralement être décidée à l'avance et est souvent difficile à changer une fois l'application construite.
la source
Les éléments architecturaux tendent vers des collections de classes ou de modules, généralement représentés sous forme de boîtes. Les diagrammes sur l'architecture représentent le niveau le plus élevé en regardant vers le bas, tandis que les diagrammes de classes sont au niveau le plus atomique. Le but des modèles d'architecture est de comprendre comment les principales parties du système s'emboîtent, comment les messages et les données circulent dans le système et d'autres problèmes structurels. Les modèles d'architecture utilisent une variété de types de composants, chacun étant généralement composé de modules successivement plus petits. Chaque composant a une responsabilité au sein de l'architecture. Les modèles de conception sont des modèles de conception de bas niveau ou de niveau classe pour de plus petites particules d'applications.
Pour plus d'informations: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns
la source
Eh bien, pour l'essentiel, c'est une question de langue. D'après mon expérience, la frontière entre le design et l'architecture, en ce qui concerne les logiciels, est une large rivière dont la largeur résulte du niveau de l'eau qui à son tour est principalement influencé par les saisons de commercialisation. Généralement, le terme «conception» est utilisé avec un aspect fort du comportement du logiciel tel que reconnu par les utilisateurs finaux, alors que «architecture» désigne la structure technique d'un logiciel, c'est-à-dire les composants, bibliothèques, protocoles et tout ce dont il a besoin pour répondre aux conception. Les «modèles de conception» jouent deux rôles: premièrement, ils sont considérés comme les meilleures pratiques pour résoudre une catégorie de problèmes (plus ou moins) standard, et non des produits; 2ème ils aident les développeurs à communiquer. En restant avec votre exemple de Singleton, il nous permet de savoir de quoi il s'agit en utilisant simplement le mot, au lieu d'expliquer à chaque fois, que nous avons créé une seule instance en utilisant un espace de données désigné (variable ou autre) qui est défini de manière contrôlée et garanti le seul, parce que nous avons protégé le constructeur de la classe, etc. Donc, à mon humble avis, la réponse courte à votre question est: cela dépend de qui parle. Cela a-t-il un sens?
la source
Les Design Patterns diffèrent des Architectural Patterns dans leur portée, ils sont plus localisés, ils ont moins d'impact sur la base de code, ils impactent une section spécifique de la base de code, par exemple:
Les modèles architecturaux ont un impact considérable sur la base du code, affectant le plus souvent l'ensemble de l'application soit horizontalement (c'est-à-dire comment structurer le code à l'intérieur d'une couche) ou verticalement (c'est-à-dire comment une demande est traitée des couches externes vers les couches internes et arrière). Exemples de modèles architecturaux: Model-View-Controller, Model-View-ViewModel
la source