Maison > développement back-end > Tutoriel C#.Net > Auto-apprentissage C#09 à partir de 0 - Exemple de modèle d'usine abstrait

Auto-apprentissage C#09 à partir de 0 - Exemple de modèle d'usine abstrait

黄舟
Libérer: 2017-02-04 10:52:46
original
1643 Les gens l'ont consulté

1. Environnement applicable

(principalement utilisé dans la production et la fabrication de plusieurs produits, logiciels avec plusieurs skins, plusieurs bases de données, etc.)

  • Un système Vous ne devez pas vous fier aux détails de la façon dont les instances de classe de produits sont créées, composées et représentées, ce qui est important pour tous les types de modèles d'usine.

  • Il y a plus d'une famille de produits dans le système, et une seule des familles de produits est utilisée à la fois.

  • Les produits appartenant à une même famille de produits seront utilisés ensemble, et cette contrainte doit se refléter dans la conception du système.

  • Le système fournit une bibliothèque de classes de produits, et tous les produits apparaissent avec la même interface, de sorte que le client ne dépend pas de l'implémentation spécifique

2. Définition du modèle

Abstract Factory Pattern : Fournit une interface pour créer une série d'objets liés ou interdépendants sans spécifier leurs classes spécifiques. Le modèle d'usine abstrait, également connu sous le nom de modèle Kit, est un modèle de création d'objets.

3. Structure du motif

Le modèle Abstract Factory comprend les rôles suivants :

  • AbstractFactory : Abstract Factory

  • ConcreteFactory : Usine de béton

  • Produit abstrait : Produit abstrait

  • Produit : Produit en béton

Pour comprendre plus clairement le modèle de méthode d'usine, deux concepts doivent d'abord être introduits :

  • Hiérarchie des produits : La hiérarchie des produits est la structure d'héritage du produit. Par exemple, un résumé. La classe est un téléviseur et ses enfants. Les catégories incluent Haier TV, Hisense TV et TCL TV. Une structure hiérarchique de produits est formée entre le téléviseur abstrait et la marque spécifique du téléviseur. Le téléviseur abstrait est la catégorie parent et la marque spécifique. de la télévision est sa sous-catégorie.

  • Famille de produits : dans le modèle d'usine abstrait, la famille de produits fait référence à un groupe de produits fabriqués par la même usine et situés dans différentes hiérarchies de produits, tels que les produits Haier fabriqués par Haier Electrical Appliances. Les téléviseurs d'usine et les réfrigérateurs Haier se trouvent dans la hiérarchie des produits TV, et les réfrigérateurs Haier se trouvent dans la hiérarchie des produits réfrigérateur.

Auto-apprentissage C#09 à partir de 0 - Exemple de modèle dusine abstrait

4. Code

Interface de processus

interface IFlow
    {
        IRxAlign CreateRxAlign();

        IDispensing CreateDispensing();
    }

class FlowA : IFlow
    {        public IRxAlign CreateRxAlign()
        {            return new RxAlignA();
        }        public IDispensing CreateDispensing()
        {            return new DispensingA();
        }
    }


class FlowB : IFlow
    {        public IRxAlign CreateRxAlign()
        {            return new RxAlignB();
        }        public IDispensing CreateDispensing()
        {            return new DispensingB();
        }
    }
Copier après la connexion

Interface de couplage

interface IRxAlign
    { 
        event LocationChange LocChange;        
int[] RoPulse { set; get; }        
int[] FiPulse { set; get; }        
int[] RoMaxStep { set; get; }        
double[] RoRESTarget { set; get; }        
double[] TxP { set; get; }        
double[] RESmin { set; get; }        
double[] RESmax { set; get; }

        Coordinate Location { set; get; }        
void LoadPara(string PN);        
void GoHome();        
void Start();        
void Stop();
    }

class RxAlignA : IRxAlign
    {        private ControlCard card;        
private QSFP28 product;        
private double RESmax, RESmin, RES;        
private double[] TxPower;        
public RxAlignA()
        {            
this.RESmax = 1.0;            
this.RESmin = 0.4;
        }        
public bool ConfigPara()
        {            
try
            {                
this.card = new ControlCard();                
this.product = new QSFP28();               
 return true;
            }            catch
            {                return false;
            }
        }        public void GoHome()
        {            //QSFP28 go home
        }        public void Start()
        {            //QSFP28 start
        }        public void Stop()
        {
            card = null;
            product = null;
        }
        ...
    }

class RxAlignB : IRxAlign
    {        private ControlCard card;        
 private CFP4 product;        
 private double RESmax, RESmin, RES;        
 private double[] TxPower;        
 public RxAlignB()
        {            this.RESmax = 1.0;            
 this.RESmin = 0.4;
        }        public bool ConfigPara()
        {            try
            {                this.card = new ControlCard();                
 this.product = new CFP4();                
 return true;
            }            catch
            {                return false;
            }
        }        public void GoHome()
        {            //CFP4 go home
        }        public void Start()
        {            //CFP4 start
        }        public void Stop()
        {
            card = null;
            product = null;
        }
        ...
    }
Copier après la connexion

Interface de distribution de colle

interface IDispensing
    {
        //code
    }class DispensingA : IDispensing
    {
        //code
    }class DispensingB : IDispensing
    {
        //code
    }
Copier après la connexion

Appel du fil principal

flow = new FlowA();
align = flow.CreateRxAlign();
align.LoadPara(this.comboBoxPN.Text);

dispens = flow.CreateDispensing();
dispens.//code...
Copier après la connexion

Ce qui précède est le contenu de l'auto-apprentissage C#09 de 0 - Exemple de modèle d'usine abstrait Pour plus d'informations. contenu, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal