Cet article partage principalement avec vous une explication détaillée du mode usine simple de PHP. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l’éditeur et jetons un coup d’œil.
1. Définition d'une usine simple
Fournit une fonction pour créer des instances d'objet sans avoir à se soucier de ses spécificités. Implementation , le type de l'instance créée peut être une interface, une classe abstraite ou une classe concrète.
2. La structure et description d'une usine simple
La structure d'une usine simple est la suivante :
Api : Définir l'interface fonctionnelle requise par les clients
Impl : Implémenter spécifiquement la classe d'implémentation d'Api, il peut y en avoir plusieurs
Factory : Factory, sélectionnez la classe d'implémentation appropriée pour créer l'objet d'interface Api
Client : Client, obtenez l'objet d'interface Api via Factory, puis programme pour l'interface Api
Interface Api :
/** * 接口的定义,该接口可以通过简单工厂来创建 * * @author Administrator * */ public interface Api { /** * 具体功能方法的定义 * * @param s * 需要的参数 */ public void operation(String s); }
ImplA :
/** * 接口的具体实现对象A * * @author Administrator * */ public class ImplA implements Api { @Override public void operation(String s) { // 实现的功能 System.out.println("ImplA s==" + s); } }
ImplB :
/** * 接口的具体实现对象B * * @author Administrator * */ public class ImplB implements Api { @Override public void operation(String s) { // 实现的功能 System.out.println("ImplB s==" + s); } }
Usine :
/** * 工厂类,用来创建Api对象 * * @author Administrator * */ public class Factory { /** * 具体创建Api对象的方法 * * @param condition * 从外部传入的选择条件 * @return */ public static Api createApi(int condition) { // 应该根据某些条件去选择究竟创建哪一个具体的实现对象 // 这些条件可以从外部传入,也可以从其他途径获取 // 如果只有一个实现,可以省略条件 Api api = null; if (condition == 1) { api = new ImplA(); } else if (condition == 2) { api = new ImplB(); } return api; } }
Classe de test Client :
public class Client { public static void main(String[] args) { // 通过简单工厂来获取接口对象 Api api = Factory.createApi(1); api.operation("正在使用简单工厂模式"); } }
Schéma d'usine simple de la séquence d'appel :
Suggestions de noms pour les usines simples :
La suggestion de nom de classe est "nom du module+Factory". Par exemple, la fabrique du module utilisateur s'appelle UserFactory
Le nom de la méthode est généralement "get+nom de l'interface" ou "create+nom de l'interface". Par exemple, si le nom de l'interface utilisateur est UserEbi, le nom de la méthode est généralement getUserEbi ou createUserEbi.
La fonction interne principale d'une méthode de fabrique simple est "Sélectionner la classe d'implémentation appropriée ", la condition de sélection ou la source du Le paramètre est généralement pour la concentration suivante :
vient du client, et les paramètres sont transmis par le client
vient du client. fichier de configuration, et est obtenu à partir du fichier de configuration. La valeur jugée
provient d'une certaine valeur pendant l'exécution du programme, comme l'obtention d'une certaine valeur d'exécution à partir du cache
Avantages de l'usine simple :
Aide à l'encapsulation
Simple Factory est simple, mais très convivial. Elle nous aide à réaliser l'encapsulation des composants, puis permet à l'extérieur des composants d'effectuer une programmation véritablement orientée interface.
2. Découplage
Grâce à une simple usine, le client et la classe d'implémentation spécifique sont découplés.
Inconvénients de l'usine simple :
1 Peut augmenter la complexité du client
2. -usines
L'essence d'une usine simple : choisir de mettre en œuvre
Quand choisir une usine simple :
Si vous souhaitez encapsuler et isoler complètement l'implémentation spécifique, afin que l'extérieur ne puisse faire fonctionner le package que via l'interface, vous pouvez alors choisir une usine simple et laissez le client obtenir l'interface correspondante via l'usine sans se soucier de sa mise en œuvre spécifique.
Si vous souhaitez gérer et contrôler de manière centralisée les responsabilités de création d'objets externes, vous pouvez choisir une usine simple.
Apprentissage recommandé : "Tutoriel vidéo 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!