Maison  >  Article  >  développement back-end  >  Qu’est-ce que le modèle d’usine php ? Pourquoi utiliser le mode usine php ?

Qu’est-ce que le modèle d’usine php ? Pourquoi utiliser le mode usine php ?

黄舟
黄舟original
2017-11-13 14:04:575529parcourir

Je crois que beaucoup d'amis se posent la même question lorsqu'ils voient le titre. Il existe de nombreux modes en PHP au cours de notre développement. Aujourd'hui, nous allons vous présenter l'un des modes d'usine PHP. mode, pourquoi utiliser le mode usine PHP ?

 Alors, qu'est-ce que le mode usine ?

À en juger par le nom, il ne semble y avoir aucune idée. Le mode usine, lié à la production ? Ou est-ce lié au processus de production ? Serait-ce lié aux dirigeants de l’usine ? Est-ce lié au secrétaire à la direction ? Secrétaire... D'accord, n'allons pas trop près. Le modèle dit d'usine est en réalité lié à la production. Que produire ? Ce qui est produit est un objet instance. Quel matériel est utilisé pour le produire ? Produit par une classe d'usine. Comment le produire ? La classe d'usine appelle sa propre méthode statique pour produire des instances d'objet.

Le modèle d'usine a une construction clé, qui est une méthode statique nommée Factory selon des principes généraux. Cependant, ce n'est qu'un principe, bien que la méthode d'usine puisse être nommée. arbitrairement, cette méthode statique convient. Accepte des paramètres de données arbitraires et doit renvoyer un objet.

 Pourquoi utiliser le mode usine ?

De nombreuses personnes qui n'ont jamais été exposées au modèle d'usine ne peuvent s'empêcher de se demander pourquoi je dois consacrer autant d'efforts à construire une classe d'usine pour créer des objets? Au lieu d’appliquer des éléments tels qu’une maintenance facile et une évolutivité, nous pouvons considérer un problème aussi simple. Si dans le projet, nous créons des objets via une classe. Lorsqu'elle est presque terminée ou est terminée et que la fonction doit être développée, il s'avère que le nom de classe d'origine n'est pas très approprié ou que la classe doit ajouter un constructeur paramètre de fonction pour réaliser l'expansion de la fonction . Putain de merde ! J'ai créé de nombreuses instances d'objet via cette classe. Dois-je encore les modifier une par une ? Ce n'est que maintenant que nous ressentons l'ampleur et la profondeur d'une « cohésion élevée et d'un faible couplage ». Pas de problème, les méthodes d'usine peuvent résoudre ce problème.

Pensez-y encore, je souhaite me connecter à la base de données Il existe plusieurs méthodes en php, extension mysql, extension mysqli, extension PDO. Je veux juste un objet pour les opérations futures. Celui que je veux dépend de la situation. Puisque vous vous connectez tous à la base de données, vous devriez avoir les mêmes fonctionnalités, établir des connexions, interroger, déconnecter... (l'importance des interfaces est montrée ici). Dans l’ensemble, ces méthodes doivent être « unies et unies au monde extérieur ». Comment y parvenir ? Profitez du modèle d'usine.

 Comment mettre en œuvre le patron d'usine ?

Par rapport au mode singleton, nous avons fourni suffisamment d'informations ci-dessus, sur la classe d'usine et les méthodes statiques dans la classe d'usine. Il suffit de créer une nouvelle instance d'objet qui doit être créée dans la méthode statique. Bien entendu, comme pour la deuxième question ci-dessus, nous pouvons simplement porter un jugement basé sur les paramètres de la méthode statique de la classe factory. Que vous utilisiez if..else.. ou switch..case.., ce serait bien de pouvoir terminer rapidement et efficacement le travail de détermination de la classe à créer. Enfin, n'oubliez pas que les méthodes statiques de classe d'usine renvoient un objet. Pas deux, encore moins trois.

 Classe d'usine de base :

//要创建对象实例的类class MyObject{
} //工厂类class MyFactory{public static function factory(){return new MyObject():
   }
} 
$instance=MyFactory::factory();

Un modèle d'usine légèrement plus complexe :

<?php
interface Transport{    
public function go();
}class Bus implements Transport{    
public function go(){        
echo "bus每一站都要停";
    }
}class Car implements Transport{    
public function go(){        
echo "car跑的飞快";
    }
}class Bike implements Transport{    
public function go(){        
echo "bike比较慢";
    }
}class transFactory{    
public static function factory($transport)
    {        
        switch ($transport) {            
        case &#39;bus&#39;:                
        return new Bus();                
        break;            
        case &#39;car&#39;:                
        return new Car();                
        break;            
        case &#39;bike&#39;:                
        return new Bike();                
        break;
        }
    }
}$transport=transFactory::factory(&#39;car&#39;);$transport->go();

Lorsque vous avez besoin que la méthode statique d'usine soit factory(), ne nommez pas bêtement la classe d'usine Factory. Pourquoi? N'oubliez pas le constructeur du même nom~

Enfin, parlons de certains sentiments. Beaucoup de novices sont plus ambitieux que d'autres. Ils viennent d'apprendre si..sinon.. , session et cookie. Soyons un peu classe. Lorsqu'ils parlent aux gens, ils parlent souvent d'évolutivité, de maintenabilité, etc. Quant aux exemples, vous resterez sans voix pendant un moment. Parfois, j'ai l'impression que peu importe que j'écrive du code ou que j'étudie avec d'autres, je suis toujours au stade de « chercher les autres dans la foule ». Après avoir vraiment étudié dur, je regarde soudainement en arrière et je réalise : « Cette personne est dans le flou ». lumière" et s'exclamer : " Il s'avère que cette personne est... " C'est juste de la merde. "

Résumé :

Après avoir lu cet article, je pense que tout le monde a une compréhension générale du modèle d'usine PHP. J'espère qu'il sera utile. pour votre travail.

Recommandations associées :

Explication détaillée des trois formes d'exemple de code du modèle d'usine PHP

Résumé des exemples d'utilisation du modèle de fabrique PHP

modèle d'usine php modèle d'itérateur de modèle de conception 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!

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