Les modèles de conception sont des façons de penser la programmation.
Ils constituent un recueil de conseils, de pratiques prêtes à l'emploi, de bonnes pratiques et d'éclairages sur le développement. Pour chaque paradigme de programmation et chaque type de tâche, il existe certains modèles de conception qui sont les mieux adaptés.
En programmation, la résolution de certains types de problèmes est répétitive, il est donc logique de choisir une méthode pour résoudre ces problèmes et de répéter cette méthode.
Le principal avantage se manifeste surtout lors du développement en équipe, lorsque chacun sait comment l'application sera développée (selon quel modèle de conception) et qu'il suffit de l'appliquer. Cela élimine alors les dizaines d'heures inutiles passées à déboguer un code étrangement écrit et à essayer de comprendre les principes voulus par l'auteur.
Mon modèle de conception préféré est le MVC
(de Model View Controller
), qui dit que l'application est divisée en 3 couches indépendantes qui s'appellent les unes les autres séquentiellement et se transmettent des données.
Par exemple, lors du rendu d'une page, on pourrait croire qu'il décide d'abord de quel type de page il s'agit (par exemple, un détail de catégorie), donc il appelle CategoryController
avec la méthode detail
.
Un exemple concret (je simplifie beaucoup) :
class CategoryController{public CategoryManager $categoryManager;public function actionDetail(string $id): void{$this->template->id = $id;$this->template->category = $this->categoryManager->getById($id);}}
Note:
Il s'agit seulement d'un exemple de code qui explique le principe du modèle de conception
MVC
.Dans une implémentation réelle, il faudrait encore trouver comment, par exemple, obtenir une instance de
CategoryManager
et comment la passer à la propriété. Généralement, l'injection de dépendances est utilisée pour ce type de tâche.
Avant de rendre la page pour le détail de la catégorie, le CategoryController
est d'abord appelé pour recevoir la demande réelle (c'est-à-dire, nous rendons le détail de la catégorie avec un certain ID, qui est obtenu par le routeur, par exemple, dans l'URL), obtenir les données (en interrogeant le Model
correspondant) et passer les données finales au modèle pour le rendu.
L'énorme avantage de ce principe est que nous pouvons écrire de nombreux modèles (logique d'application) qui sont indépendants de la façon dont les données sont présentées (le modèle), ce qui permet d'obtenir un code réutilisable. En fait, si nous voulons utiliser le CategoryManager
dans un autre projet, nous passons simplement les données à travers le Controller
d'une manière spécifique, qui sera rendu selon le modèle défini par le projet lui-même, tandis que la logique de l'application reste la même et personne ne s'en soucie car la couche logicielle a rempli son interface et ses responsabilités convenues.
Note pratique:
Le modèle de conception
MVC
est utilisé par la plupart des frameworks modernes tels que Nette, Symfony, Laravel et autres.Nous pouvons également rencontrer
MVC
dans le développement d'applications mobiles et d'autres types de logiciels où nous devons obtenir des données et les rendre dans un modèle en fonction du type de page ou de vue.
En général, en programmation, il existe de nombreux modèles de conception qui ne conviennent pas au développement web. Cette liste décrit les motifs les plus importants que j'utilise moi-même et avec lesquels vous devriez être familiarisé.
Une liste complète de tous les design patterns, des exemples de leur utilisation et des explications détaillées se trouvent sur une page séparée.
Modèle
(logique et données de l'application), Vue
(vue du modèle et des données) et Contrôleur
(reliant Modèle
et Vue
).Il existe de nombreux autres modèles de conception, mais ce sont les plus importants que vous devez connaître.
Certaines techniques de développement de la programmation sont considérées comme des "anti-modèles", c'est-à-dire l'exact opposé d'un modèle de conception. Il s'agit généralement d'une technique qui produit un code étrange qui ne peut pas être facilement débogué, maintenu, et qui se comporte de manière magique
.
Un exemple typique est l'utilisation de variables globales.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | fr