Jorge Marquez Jose Gomez

Usine modèle (usine)

par sur ago.27, 2010, sous DoNet

Un modèle de fabrique sert à canaliser toutes les créations d'objets en un seul point. Ceci est utile pour la conception robuste de notre système et de s'adapter aux changements.

Le modèle de fabrique peut être combiné avec le pattern singleton car il est plus confortable à utiliser et la forme utile d'utiliser. Dans cet exemple nous allons mettre une usine sans singleton.

Pour dire le modèle d'usine est des modèles créationnelles, ce type de modèle qui fait abstraction de la manière de créer des objets concrets, donnant ainsi un soutien pour créer des objets dans l'abstrait.

Pour démarrer un modèle de fabrique consiste à effectuer:
- Une fonction ou une méthode qui est responsable de la création d'objets d'un type donné.
- Il n'est pas obligatoire mais recommandé que la fonction ou la méthode retourne une abstraction (interface ou classe abstraite).

Imaginez un magasin de pizza nécessite un logiciel dont vous avez besoin d'avoir un certain nombre de produits (pizzas variées). En tant que concepteurs, nous sommes bien, la création d'objets pizza peut être fait à partir de n'importe où dans le projet, mais le problème c'est qu'il ya de nombreux types de pizzas. Pour créer chaque pizza pour chaque type dans différentes parties du programme serait la première chose que vous pourriez penser, mais ... si, au lieu que nous utilisons le bon sens et d'appliquer l'usine?, Cela nous permettrait aussi d'un nouveau produit ou un changement de l'un d'eux que le changement à un seul endroit, en prenant plus contrôlé ce code. Même si vous vous rendez compte de la vitesse de changement est beaucoup plus pour aller changer toutes les apparences possibles de nos pizzas par le code.
Eh bien, l'usine serait responsable de la création de toutes sortes de pizzas et d'offrir tous les points possibles du programme.

Notre exemple serait:

- Le IPizza interface:

     IPizza l'interface
     {
         Nulle WhoAmI ();
     }

- Les pizzas individuelles:

     public class PizzaBarbacoa: IPizza
     {
         Membres de la région # IPizza

         public void WhoAmI ()
         {
             Console.WriteLine ("Je suis une pizza barbecue");
         }

         # Endregion
     }
     public class PizzaMargarita: IPizza
     {
         Membres de la région # IPizza

         public void WhoAmI ()
         {
             Console.WriteLine ("Je suis un Margarita pizza");
         }

         # Endregion
     }
     public class PizzaPepperoni: IPizza
     {
         Membres de la région # IPizza

         public void WhoAmI ()
         {
             Console.WriteLine ("Je suis un pizza au pepperoni");
         }

         # Endregion
     }

- L'usine en question:

     public class PizzaFactory
     {
         public enum tipoPizza
         {
             Pepperoni, Margherita, Barbecue
         }

         IPizza publique getPizza (type tipoPizza)
         {
             Interrupteur (Type)
             {
                 cas tipoPizza.Barbacoa:
                     return new PizzaBarbacoa ();
                     break;
                 cas tipoPizza.Margarita:
                     return new PizzaMargarita ();
                     break;
                 cas tipoPizza.Pepperoni:
                     return new PizzaPepperoni ();
                     break;
                 par défaut:
                     return new PizzaBarbacoa ();
             }
         }
     }

- Un petit test:

     Test de la classe publique
     {
         public void testPizza ()
         {
             / / Exemple ne pas utiliser l'usine
             IPizza pizza1 = new PizzaBarbacoa ();
             pizza1.quienSoy ();
             IPizza pizza2 = new PizzaMargarita ();
             pizza2.quienSoy ();
             IPizza pizza3 = new PizzaPepperoni ();
             pizza3.quienSoy ();
             IPizza pizza4 = new PizzaBarbacoa ();
             pizza4.quienSoy ();
             IPizza pizza5 = new PizzaMargarita ();
             pizza5.quienSoy ();

             / / Exemple d'utilisation de l'usine
             PizzaFactory PizzaFactory usine = new ();
             IPizza pizza6 = factory.getPizza (PizzaFactory.tipoPizza.Barbacoa);
             pizza6.quienSoy ();
             IPizza pizza7 = factory.getPizza (PizzaFactory.tipoPizza.Margarita);
             pizza7.quienSoy ();
             IPizza pizza8 = factory.getPizza (PizzaFactory.tipoPizza.Pepperoni);
             pizza8.quienSoy ();
         }
     }

Comme vous pouvez voir comment utiliser et ses avantages sont une meilleure. J'espère que vous aimez!. Rendez-vous plus tard!

: , , , les

Laisser un commentaire

Imagen CAPTCHA
Rafraîchir l'image
*

Vous cherchez quelque chose?

Utilisez le formulaire ci-dessous pour rechercher sur le site:

Vous n'avez pas trouvé ce que vous cherchez? Laisser un commentaire ou contactez-nous pour prendre soin.

Visitez nos amis!

Quelques sites hautement recommandé ...

Archives

Toutes les entrées, chronologiquement internautes