1. Mode Simple Factory (Simple Factory)
Le mode Simple Factory renvoie une instance de l'une des nombreuses classes possibles en fonction des données qui lui sont fournies. Habituellement, la classe renvoyée a une classe parent commune et des méthodes publiques.
Le modèle Simple Factory n'est en fait pas l'un des 23 modèles de conception de GoF.
2. Rôles et structure du modèle Simple Factory :
Créateur de rôle de classe Factory (LightSimpleFactory) : La classe factory crée des objets produit sous le contrôle direct du client (méthode Create).
Rôle produit abstrait Product (Light) : Définit la classe parente des objets créés par une usine simple ou l'interface qu'ils partagent. Peut être une classe, une classe abstraite ou une interface.
Rôle du produit Concrete ConcreteProduct (BulbLight, TubeLight) : Définit les objets spécifiques traités par l'usine.
3. Exemple de programme :
using System; public abstract class Light { public abstract void TurnOn(); public abstract void TurnOff(); } public class BulbLight : Light { public override void TurnOn() { Console.WriteLine("Bulb Light is Turned on"); } public override void TurnOff() { Console.WriteLine("Bulb Light is Turned off"); } } public class TubeLight : Light { public override void TurnOn() { Console.WriteLine("Tube Light is Turned on"); } public override void TurnOff() { Console.WriteLine("Tube Light is Turned off"); } } public class LightSimpleFactory { public Light Create(string LightType) { if(LightType == "Bulb") return new BulbLight(); else if(LightType == "Tube") return new TubeLight(); else return null; } } public class Client { public static void Main() { LightSimpleFactory lsf = new LightSimpleFactory(); Light l = lsf.Create("Bulb"); l.TurnOn(); l.TurnOff(); Console.WriteLine("-----------------"); l = lsf.Create("Tube"); l.TurnOn(); l.TurnOff(); } }
5. Avantages et inconvénients :
Avantages :
La classe d'usine contient la logique de jugement nécessaire pour décider quand créer les instances de classe de produits, les le client est déchargé de la responsabilité de créer directement des objets de produit et se contente de « consommer » le produit. Le modèle d'usine simple réalise la séparation des responsabilités grâce à cette approche.
Inconvénients :
Lorsque le produit a une structure hiérarchique multicouche complexe, la classe usine n'a qu'elle-même et peut s'adapter aux changements de la même manière, ce qui est le défaut du modèle. Parce que la classe usine concentre toute la logique de création de produits, dès qu’elle ne fonctionne pas correctement, c’est l’ensemble du système qui en sera affecté.
En même temps, le système est difficile à étendre. Une fois qu'un nouveau produit est ajouté, la logique de l'usine doit être modifiée, ce qui peut rendre la logique de l'usine trop complexe.
De plus, le modèle d'usine simple utilise généralement des méthodes d'usine statiques, ce qui rend impossible l'héritage par les sous-classes, ce qui rend impossible pour les rôles d'usine de former une structure hiérarchique basée sur l'héritage.
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!