Maison > Article > développement back-end > La différence entre le mode usine php et le mode stratégie
L'usine est un modèle de création, sa fonction est de créer des objets
La stratégie est un modèle de comportement, sa fonction est de laisser un objet choisir un comportement parmi plusieurs comportements
Les points de préoccupation sont différents
Un objet de préoccupation est créé
Une encapsulation du comportement de préoccupation ( apprentissage recommandé : Tutoriel vidéo PHP)
Résoudre différents problèmes
Le modèle d'usine est un modèle de conception créationnel qui accepte des instructions , créez une instance qui répond aux exigences ; elle résout principalement la distribution unifiée des ressources, totalement indépendante de la création d'objets, de sorte que la création d'objets n'a rien à voir avec l'utilisation spécifique du client. Principalement utilisé dans la sélection de plusieurs bases de données, le chargement de fichiers de bibliothèque de classes, etc.
Le mode stratégie consiste à résoudre le changement et l'expansion des stratégies. Pour être plus concis, il définit les familles de stratégies et les encapsule séparément afin qu'elles puissent être remplacées les unes par les autres. les changements de stratégies indépendants. Pour les clients utilisant la stratégie.
L'usine équivaut à une boîte noire, et la stratégie équivaut à une boîte blanche
Exemple :
<?php header('content-type:text/html;charset=utf-8'); abstract class Product { abstract public function getName(); } class ProductA extends Product { public function getName() { echo '这是A商品<br>'; } } class ProductB extends Product { public function getName() { echo '这是B商品<br>'; } } //工厂模式 class ProductFactory { public static function create($num) { switch($num) { case 1: return new ProductA(); case 2: return new ProductB(); } return null; } } //传递不同的参数获取不同的对象 $obj=ProductFactory::create(1); $obj->getName(); //这是A商品 $obj=ProductFactory::create(2); $obj->getName(); //这是B商品 //=======策略模式 <?php header('content-type:text/html;charset=utf-8'); interface IStrategy { function ontheway(); } class Walk implements IStrategy { public function ontheway() { echo '走着去<br>'; } } class Bick implements IStrategy { public function ontheway() { echo '骑自行车去<br>'; } } class Bus implements IStrategy { public function ontheway() { echo '坐巴士去<br>'; } } //策略模式,传递不同的参数,调用不同的策略 class Strategy{ public function getWay(IStrategy $obj) { $obj->ontheway(); } } $obj=new Strategy(); $obj->getWay(new Walk); //走着去 $obj->getWay(new Bick); //骑自行车去 $obj->getWay(new Bus); //坐巴士去Plus d'articles sur les technologies liées à PHP, veuillez visiter la colonne
Tutoriel graphique PHP pour apprendre !
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!