Dans cette série, nous examinons les modèles de conception et voyons comment nous pouvons les exploiter à notre avantage lorsque nous construisons des produits sur WordPress..
La bonne chose à propos des modèles de conception est qu'ils ne sont pas explicitement limités à des thèmes ou à des plug-ins - ils sont pratiques dans une variété de scénarios différents. Il s'agit simplement de pouvoir identifier les modèles applicables à certains scénarios..
Dans le dernier post, nous avons examiné le modèle Singleton. Dans cet article, nous allons examiner le modèle de fabrique simple, particulièrement utile lorsque vous avez plusieurs classes différentes dont chacune a un objectif unique et résout un problème spécifique..
Dans cet article, nous examinerons un autre modèle, le modèle d'usine simple, qui est utile lorsque vous avez plusieurs classes dont chacune a un but unique et qui peuvent être sélectionnées en fonction de certains critères..
Le modèle d'usine simple est en fait dérivé d'un modèle connu sous le nom de modèle de méthode d'usine, qui est une version légèrement plus compliquée du modèle que nous allons examiner..
Selon Wikipedia, le modèle de méthode d'usine est défini comme suit:
Le modèle de méthode d'usine est un modèle de création orienté objet permettant de mettre en œuvre le concept d'usines et traite le problème de la création d'objets (produits) sans spécifier la classe exacte d'objet qui sera créé.
Cela semble un peu compliqué, n'est-ce pas?
La vérité est qu’il s’agit en fait d’un modèle de conception très puissant, mais il faudrait un article beaucoup plus long pour en discuter et c’est un peu hors de portée pour le but de cette série..
Donc, comme mentionné, nous allons jeter un oeil à une version du modèle qui est un peu jumelé et devrait être plus généralement applicable à des projets moins compliqués.
Avant de faire cela, proposons une définition du modèle d’usine simple:
Le modèle Simple Factory renvoie un ensemble de données spécifique ou une classe spécifique en fonction de son entrée..
Ah le risque de faire un jeu de mots, simple, à droite?
En réalité, de nombreux ingénieurs en logiciel considèrent l’usine simple comme un idiome plus qu’un modèle à part entière; d'autres considèrent cela comme un motif.
Pour ce que ça vaut, je le vois comme un motif très simple. Il a un cas d'utilisation spécifique qui peut être facilement identifié quand l'utiliser au cours du développement que nous verrons plus loin dans cet article..
Quoi qu'il en soit, je soulève cette question de sorte que si vous voyez cela utilisé comme un idiome (ou un motif) utilisé dans divers articles sur Internet, ou même dans une conversation, vous saurez que les développeurs en question font référence à la même stratégie de programmation. - juste d'une manière différente.
Tout comme les modèles de conception dans des projets spécifiques autres que WordPress, tels que les applications plus grandes, les modèles de conception constituent un moyen éprouvé de résoudre un problème courant..
Cela aide à abstraire un peu notre code, à garder notre projet facilement maintenable, facilement lisible, et peut réellement nous aider à garder notre code épuré. Cela peut nous amener à avoir plus de des dossiers dans notre projet, mais chaque fichier devrait avoir moins de lignes de code.
Cela signifie que chaque fichier doit avoir un objectif spécifique qui doit être clair, non seulement pour nous, mais également pour les futurs développeurs..
Maintenant, avant de plonger dans les diagrammes, de parler des classes et des stratégies requises pour mettre en œuvre le modèle actuel, je tiens à mentionner que nous allons adopter une approche simple à cet égard..
Le fait est que le lectorat de ce blog couvre un large éventail d’expériences - certaines personnes apprennent à écrire du code; d'autres qui sont des vétérans chevronnés.
Afin de plaire à la majorité des lecteurs, nous devons trouver un équilibre. Donc, pour ceux d’entre vous qui travaillent dans le génie logiciel depuis des années, cela peut sembler excessivement simpliste; cependant, ne le parcourez pas - peut-être aurez-vous quelque chose de nouveau.
Pour ceux d'entre vous qui sont débutants ou même des programmeurs intermédiaires, portez une attention particulière à ce dont nous discutons, car cela peut générer des dividendes pour les travaux futurs (ou même existants)..
Alors imaginez ce scénario: vous travaillez sur une fonction qui prend un ensemble d’entrées - généralement un type de chaîne unique ou un entier - et vous avez cette longue sinon
déclaration ou peut-être que vous avez ce grand commutateur / boîtier
déclaration qui continue de croître à mesure que votre projet se développe.
Le problème est que les conditionnels deviennent difficiles à gérer. En fait, les conditions de cas, ou les blocs de cas, peuvent en réalité faire autant de travail qu'une certaine fonction devrait en faire.
C'est là que la Simple Factory entre en jeu. Ce que nous pouvons faire est d’abréger les détails de chaque condition dans leur propre classe, ce qui facilite grandement la maintenance et le maintien du code beaucoup plus léger..
Et cette est le modèle simple d'usine.
Voici donc les principales caractéristiques du modèle Simple Factory:
Rien aussi compliqué, non? Honnêtement, je pense que le diagramme est un peu plus compliqué que les principes en jeu. Il offre vraiment beaucoup de flexibilité notamment chaque fois que vous cherchez à introduire un autre type d'utilisateur comme un éditeur ou quelque chose de similaire.
Remarque: C'est ne pas être confondu avec les types d'utilisateurs intégrés de WordPress. Ceci est simplement un exemple pour montrer à quoi ressemblerait le motif.
Maintenant que nous avons examiné le schéma du modèle, examinons le code source en action. Ci-dessous, nous examinerons le code source de chaque classe, puis nous fournirons un téléchargement pour une démonstration entièrement documentée après la discussion..
Tout d'abord, regardons la classe du plugin. Rappelez-vous qu’il ne s’agit que d’un prototype de l’apparence du motif. Ce n'est pas la même chose qu'un plugin WordPress entièrement développé.
factory = new Simple_Factory (); fonction publique get_user ($ permission) return $ this-> usine-> get_user ($ permission); ?>
Notez que le plugin est relativement simple:
$ usine
propriété à une instance du Simple_Factory
get_user
qui renvoie un utilisateur basé sur un typeNous verrons comment cela entre en jeu après avoir examiné toutes les autres classes..
le Utilisateur
est une classe de base abstraite qui fournit un constructeur de base et une fonction abstraite devant être implémentée par toutes les autres sous-classes.
rôle = $ rôle; fonction publique abstraite get_role (); ?>
Notez que cette classe est destinée à être sous-classée par une variété d'autres classes, que nous allons examiner en détail dans un instant..
Les quatre classes suivantes sont toutes des fichiers distincts dont chacune sous-classe Utilisateur
classe de base. J'ai choisi de les inclure tous ensemble parce qu'il y a si peu de différence par rapport à leur mise en œuvre réelle qu'il devrait être assez facile à suivre.
role = "Administrateur"; fonction publique get_role () return $ this-> role; ?>
role = "Reader"; fonction publique get_role () return $ this-> role; ?>
role = "bénévole"; fonction publique get_role () return $ this-> role; ?>
Comme d'habitude, laissez-moi des questions dans les commentaires; sinon, relisez le code puis assurez-vous de lire La Simple Factory qui est la section suivante - il lie tout cela ensemble.
De plus, n'oubliez pas que tout ce code sera partagé à la fin de l'article avec des commentaires de code décrivant exactement ce qui se passe..
le Simple_Factory
La classe est vraiment le noeud de tout le schéma. Voici où toutes les décisions sont prises et les objets appropriés sont retournés.
Notez que le Simple_Factory
inclut la classe d'utilisateurs de base et ses sous-classes, puis fonctionne pour renvoyer le type d'utilisateur approprié en fonction du jeu d'autorisations entrant.
Même si cela devrait être un peu évident à ce stade de l'article, le modèle Simple Factory présente de nombreux avantages, en particulier si vous avez l'habitude de travailler avec des conditionnels volumineux..
Globalement, c’est l’un de mes modèles préférés simplement en matière d’organisation du code et de spécialisation qu’il peut apporter à la table..
Enfin, vous pouvez extraire le code source complet - avec la documentation et les instructions d’installation - sur GitHub en utilisant ce lien..
À ce stade, nous avons examiné trois modèles:
Cette série pourrait aller un pendant un moment; Cependant, je pense que nous avons couvert suffisamment de terrain au moins pour permettre à nombre d'entre nous de commencer à appliquer des modèles à notre travail..
Ainsi, dans le dernier article de la série, nous récapitulerons ce que nous avons appris et nous vous recommanderons également d'autres modèles, leur objectif et d'autres points de recherche qui devraient continuer à vous aider à continuer à en apprendre davantage sur les modèles de conception. et leurs avantages non seulement dans le développement WordPress, mais aussi dans le développement de logiciels en général.