Une brève introduction au modèle de méthode d'usine dans les modèles de conception C

黄舟
Libérer: 2017-01-18 14:59:58
original
1485 Les gens l'ont consulté

Méthode Factory : définissez une interface pour créer des objets et laissez les sous-classes instancier quelle classe. La méthode factory retarde l'instanciation d'une classe vers ses sous-classes.

La différence avec une usine simple : une usine simple doit modifier la classe d'origine, ce qui viole le principe d'ouverture et de fermeture. La méthode factory évite ce problème de classes. Il conserve les avantages de l'encapsulation du processus de création d'objets et n'a besoin que d'ajouter une classe d'usine, ce qui résout le problème du simple jugement de branche d'usine.

Le modèle de méthode Factory contient quatre rôles :

Produit : produit abstrait

ConcreteProduct : produit en béton

Factory : usine abstraite

ConcreteFactory : Usine spécifique

Diagramme de classes UML


Une brève introduction au modèle de méthode dusine dans les modèles de conception C


Apprenez ici Lei Feng, par exemple, utilise le modèle de la méthode d'usine et considère la méthode de Lei Feng comme un produit abstrait, correspondant à une usine abstraite ; ceux qui apprennent de Lei Feng la considèrent comme un produit concret, correspondant à une usine concrète ; Si vous souhaitez ajouter une catégorie de personnes qui apprennent de Lei Feng, il vous suffit d'ajouter la catégorie correspondante sans modifier la catégorie d'origine.

Cas de test :

[code]int main(){
    //工厂方法
    IFactory *factory = new UnderGraduateFactory;  //new一个大学生工厂

    //创建学雷锋的学生
    LeiFeng *student = factory->createLeiFeng();

    //学生干了哪些雷锋方法
    student->BuyRice();  //买米
    student->Sweep(); //扫地
    student->Wash();  //清洗   

    return 0;
}
Copier après la connexion

Catégorie Lei Feng (produit abstrait) :

[code]class LeiFeng{
public:
    virtual void BuyRice(){
        std::cout << "Buy rice.\n";
    }
    virtual void Sweep(){
        std::cout << "Sweep.\n";
    }
    virtual void Wash(){
        std::cout << "Wash.\n";
    }
};
Copier après la connexion

Personnes qui apprennent de Lei Feng (produits spécifiques) :

[code]class UnderGraduate: public LeiFeng{
};
//学雷锋的志愿者(具体产品)
class Volunteer: public LeiFeng{
};
Copier après la connexion

Cours d'usine de Lei Feng (usine abstraite) :

[code]class IFactory{
public:
    //创建学雷锋对象
    virtual LeiFeng* createLeiFeng(){
        return NULL;
    } 
};
Copier après la connexion

Apprenez l'usine d'objets de Lei Feng (usine à béton) :

[code]class UnderGraduateFactory: public IFactory{
    LeiFeng* createLeiFeng(){
        return new UnderGraduate;
    }
};
class VolunteerFactory: public IFactory{
    LeiFeng* createLeiFeng(){
        return new Volunteer;
    }
};
Copier après la connexion

Ce qui précède est le contenu de l'usine modèle de méthode du modèle de conception C, pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


É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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!