Tout d'abord, jetons un coup d'œil au modèle d'usine simple. Le code est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
|
Ce qui suit présente principalement le modèle d'usine du modèle de conception PHP. Le principe du modèle d'usine et le résume et l'analyse sous forme d'exemples. Les amis qui en ont besoin peuvent se référer à la définition et à l'utilisation spécifiques du mode usine. J'espère que cela pourra aider tout le monde.
Cet article décrit le modèle d'usine du modèle de conception PHP avec des exemples. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Quel est le but ou l'objectif de l'utilisation du mode usine ?
Le plus grand avantage du modèle d'usine réside dans la création d'objets, qui consiste à encapsuler le processus de création d'objets, afin qu'un nouvel objet puisse être généré à tout moment.
Réduisez le code et copiez-collez, la relation de couplage est importante et elle affecte d'autres parties du code.
En termes simples, vous utilisiez new pour créer un objet, mais maintenant ce processus est encapsulé.
En supposant que le mode usine n'est pas utilisé : alors la classe a est appelée à de nombreux endroits, et le code créera une instance comme celle-ci : new a() Supposons qu'un jour le nom de la classe a doive le faire. être modifié, ce qui signifie beaucoup de code d'appel. Tous doivent être modifiés.
L'avantage du patron usine réside dans la création d'objets.
L'avantage du patron usine réside dans la création d'objets. Établissez une usine (une fonction ou une méthode de classe) pour créer de nouveaux objets. Sa tâche est d'encapsuler le processus de création d'objets
La création d'objets n'utilise pas de new. Définissez plutôt une méthode de création d’instances d’objet.
Chaque classe devra peut-être se connecter à la base de données. Encapsulez ensuite la connexion à la base de données dans une classe. À l'avenir, utilisez des noms de classes dans d'autres classes :
Pourquoi introduire des concepts abstraits ?
Pensez-y, dans la vraie vie, lorsque nous sommes incapables de déterminer une chose précise, nous classons souvent une catégorie de choses dans une catégorie abstraite.
Méthode d'usine :
Par exemple, si votre usine s'appelle "Cigarette Factory", alors il peut y avoir "Septwolves Factory", "China Factory", etc. Cependant, cette usine ne produit que un produit : les cigarettes ;
Usine abstraite : Il est impossible de décrire quels produits elle produit. Elle fabrique de nombreux types de produits (l'usine abstraite générera donc des sous-usines).
Votre usine est complète et produit une « série » de produits plutôt qu'un « un », comme les « cigarettes » et la « bière ». Ensuite, il peut aussi y avoir des usines spécifiques qui en dérivent, mais ces usines fabriquent toutes cette série de produits, mais le goût peut être différent en raison des différentes régions et pour s'adapter aux goûts locaux.
Modèle d'usine : compris comme une usine qui ne génère qu'un seul produit. Par exemple, ceux qui produisent des cigarettes.
Méthode usine : une ligne de production de produits en usine. Par exemple, le processus de génération de clavier.
D'autres réfuteront : je n'ai rien à faire quand je suis rassasié, donc je dois changer le nom de la classe ? Peut être. Généralement, les noms de classes ne sont pas modifiés.
En fait, il existe de nombreuses variantes du modèle d'usine. La clé est d'en saisir l'essence : tant que différentes instances de classe peuvent être générées en fonction de différents paramètres, cela est conforme à l'idée de conception de . le modèle d'usine.
Cela me rappelle qu'il existe souvent des méthodes dans le framework qui sont chargées de générer des instances de classe spécifiques pour l'appel.
Comme j'ai déjà utilisé phpcms, il est préférable d'utiliser phpcms pour aider à comprendre, comme suit :
1 |
|
générera une instance de commande . La transmission de différents paramètres pour obtenir différentes instances de classe est cohérente avec le modèle d'usine.
1 |
|
Bien entendu, la méthode load_app_class intègre également l'idée dumode singleton. Évitez d'appeler n fois et de créer à plusieurs reprises n instances identiques
Une application typique à laquelle je pense en mode usine est la suivante : PHP peut avoir besoin de se lier à MySQL, ou il peut avoir besoin de se lier à sqlserver ou à d'autres bases de données. Créez ensuite une classe de base de données abstraite
Cette classe est une classe d'usine, chargée de générer différents objets.
C'est très pratique pour l'expansion. Lorsqu'on se connecte directement à la base de données, au lieu d'utiliser le code
1 |
|
sous la forme
, on peut générer dynamiquement une instance à laquelle se connecter la base de données. Il peut s'agir de MySQL ou connecté à Oracle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Il existe également une implémentation correspondante dans le framework thinkphp :
Db.class.php est une classe d'usine (peut également être appelée la couche intermédiaire de la base de données, elle est appelée couche intermédiaire car elle peut faire fonctionner MySQL, Oracle et d'autres bases de données. Cette classe est la couche intermédiaire, protégeant l'implémentation spécifique, permettant aux programmeurs de se connecter à MySQL, Oracle, etc. sans modifier le code de requête d'origine. . Base de données
Il existe une factory()
méthode dans Db.class.php pour créer différentes instances de base de données
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
ainsi qu'un paiement. interface À l'avenir, cela pourrait correspondre à différentes passerelles de paiement : Alipay, Tenpay, banque en ligne, etc. Pour faciliter l'expansion future, concevoir une usine spécifiquement pour la production d'interfaces de passerelle, les résumer et en faire des interfaces La classe doit. implémenter son interface. À l'avenir, vous pourrez ajouter un mode de paiement et modifier les paramètres
.Le livre
Définissez les classes suivantes :
UserFactory Classe d'usine d'utilisateurs, chargée de générer différentes classes d'utilisateurs
Utilisateur : la classe de base des classes d'utilisateurs, toutes les classes d'utilisateurs héritent de cette classe
Classes avec différents rôles : classe d'utilisateurs enregistrés, classe d'utilisateurs anonymes, classe d'utilisateurs administrateur
Recommandations associées :
Une brève analyse du modèle d'usine abstraite JS_Connaissances de base
Quel est le rôle du modèle de fabrique de modèles de conception PHP ?
Une brève introduction aux trois modes d'usine PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!