Une brève introduction aux trois modes d'usine PHP
Dans l'article précédent, nous vous avons présenté ce qu'est PHPle mode usine et pourquoi vous devriez utiliser le mode usine php. Aujourd'hui, nous allons présenter en détail les trois situations du mode usine php, à travers des exemples. analyser!
Modèle d'usine
Implémentation : définissez une interface pour créer des objets et laissez les sous-classes décider quelle classe instancier.
Scénarios d'application : il existe de nombreuses sous-classes et elles seront étendues, et la méthode de création est plus compliquée.
Les modèles d'usine sont divisés en trois types : usine simple, méthode d'usine et usine abstraite.
La différence entre les trois types d'usines est que l'usine abstraite a plusieurs lignes de produits, tandis que la La méthode factory n'a qu'une seule ligne de produits, est une simplification de l'usine abstraite. La méthode factory est opposée à la méthode factory simple. À première vue, il semble que la méthode factory ajoute beaucoup de code mais implémente les mêmes fonctions que la méthode factory simple. Mais l'essentiel est que l'usine simple ne suit pas strictement le principe d'ouverture et de fermeture du modèle de conception Lorsque de nouveaux produits doivent être ajoutés, le code de l'usine doit également être modifié. Cependant, la méthode d'usine adhère strictement au principe d'ouverture et de fermeture. Le mode n'est responsable que de l'interface d'usine abstraite, et l'extension de l'usine spécifique est laissée au client. Lors de la division du travail, les ingénieurs de base sont responsables de la définition des usines abstraites et des produits abstraits, et les ingénieurs commerciaux sont responsables de la mise en œuvre d'usines et de produits spécifiques. Tant que la couche d’abstraction est bien conçue, le framework est très stable.
Le code est le suivant :
/** * 工厂模式 */ //抽象产品 interface Person { public function getName(); } //具体产品实现 class Teacher implements Person { function getName() { return "老师n"; } } class Student implements Person { function getName() { return "学生n"; } } //简单工厂 class SimpleFactory { public static function getPerson($type) { $person = null; if ($type == 'teacher') { $person = new Teacher(); } elseif ($type == 'student') { $person = new Student(); } return $person; } } //简单工厂调用 class SimpleClient { function main() { // 如果不用工厂模式,则需要提前指定具体类 // $person = new Teacher(); // echo $person->getName(); // $person = new Student(); // echo $person->getName(); // 用工厂模式,则不需要知道对象由什么类产生,交给工厂去决定 $person = SimpleFactory::getPerson('teacher'); echo $person->getName(); $person = SimpleFactory::getPerson('student'); echo $person->getName(); } } //工厂方法 interface CommFactory { public function getPerson(); } //具体工厂实现 class StudentFactory implements CommFactory { function getPerson(){ return new Student(); } } class TeacherFactory implements CommFactory { function getPerson() { return new Teacher(); } } //工厂方法调用 class CommClient { static function main() { $factory = new TeacherFactory(); echo $factory->getPerson()->getName(); $factory = new StudentFactory(); echo $factory->getPerson()->getName(); } } //抽象工厂模式另一条产品线 interface Grade { function getYear(); } //另一条产品线的具体产品 class Grade1 implements Grade { public function getYear() { return '2003级'; } } class Grade2 implements Grade { public function getYear() { return '2004级'; } } //抽象工厂 interface AbstractFactory { function getPerson(); function getGrade(); } //具体工厂可以产生每个产品线的产品 class Grade1TeacherFactory implements AbstractFactory { public function getPerson() { return new Teacher(); } public function getGrade() { return new Grade1(); } } class Grade1StudentFactory implements AbstractFactory { public function getPerson() { return new Student(); } public function getGrade() { return new Grade1(); } } class Grade2TeacherFactory implements AbstractFactory { public function getPerson() { return new Teacher(); } public function getGrade() { return new Grade2(); } } //抽象工厂调用 class FactoryClient { function printInfo($factory) { echo $factory->getGrade()->getYear().$factory->getPerson()->getName(); } function main() { $client = new FactoryClient(); $factory = new Grade1TeacherFactory(); $client->printInfo($factory); $factory = new Grade1StudentFactory(); $client->printInfo($factory); $factory = new Grade2TeacherFactory(); $client->printInfo($factory); } } //简单工厂 //SimpleClient::main(); //工厂方法 //CommClient::main(); //抽象工厂 FactoryClient::main();
Résumé :
Avez-vous découvert le mode usine PHP à travers les exemples détaillés dans cet article ? , n'est-ce pas assez simple ? J'espère que cela vous sera utile !
Recommandations associées :
Explication détaillée des trois formes d'exemple de code du mode usine PHP
Exemples d'utilisation de PHP Résumé du mode usine
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Se connecter à CakePHP est une tâche très simple. Il vous suffit d'utiliser une seule fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus en arrière-plan comme cronjob. La journalisation des données dans CakePHP est facile. La fonction log() est fournie

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.
