Maison  >  Article  >  développement back-end  >  La différence entre le mode usine php et le mode stratégie

La différence entre le mode usine php et le mode stratégie

(*-*)浩
(*-*)浩original
2019-06-06 15:12:444245parcourir

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

La différence entre le mode usine php et le mode stratégie

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(&#39;content-type:text/html;charset=utf-8&#39;);
abstract class Product {
abstract public function getName();
}
class ProductA extends Product  {
public function getName() {
echo &#39;这是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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn