Modèle de conception C brève introduction au modèle de méthode de modèle

黄舟
Libérer: 2017-01-18 14:54:53
original
1333 Les gens l'ont consulté

Modèle de méthode Template : Définir le squelette d'un algorithme dans une opération, tout en reportant certaines étapes aux sous-classes. Les méthodes modèles permettent aux sous-classes de redéfinir des étapes spécifiques d'un algorithme sans modifier la structure de l'algorithme.

Un moment approprié : lorsque nous voulons terminer un processus ou une série d'étapes qui sont cohérentes à un certain niveau de détail, mais que la mise en œuvre des étapes individuelles à un niveau plus détaillé peut être différente, nous considérons généralement utilisation de modèles Modèle de méthode à gérer.

Deux rôles des méthodes modèles :

Classe abstraite (AbstractClass) : donne le cadre de la logique de haut niveau

Classe de produits concrets (ConcreteClass) : lors de la mise en œuvre de la définition de la classe parent Une ou plusieurs méthodes abstraites. Une AbstractClass peut avoir plusieurs ConcreteClass.

Diagramme de structure :

Modèle de conception C brève introduction au modèle de méthode de modèle


Cas de test :

[code]int main(){
    AbstractClass *pAbstractA = new ConcreteClassA;
    pAbstractA->TemplateMethod();  //Output: ConcreteA Operation1 ConcreteA Operation2

    AbstractClass *pAbstractB = new ConcreteClassB;
    pAbstractB->TemplateMethod();   //Output: ConcreteB Operation1 ConcreteB Operation2

    if(pAbstractA) delete pAbstractA;
    if(pAbstractB) delete pAbstractB;

    return 0;
}
Copier après la connexion

Implémentation de la méthode modèle :

[code]class AbstractClass{
public:
    void TemplateMethod(){  //统一的对外一个接口
        PrimitiveOperation1();
        PrimitiveOperation2();
    }
protected:
    virtual void PrimitiveOperation1(){  //原始操作1
        std::cout << "Default Operation1\n";
    }
    virtual void PrimitiveOperation2(){  //原始操作2
        std::cout << "Default Operation2\n";
    }
};

class ConcreteClassA: public AbstractClass{
protected:
    //重载方法1和2
    virtual void PrimitiveOperation1(){
        std::cout << "ConcreteA Operation1\n";
    }
    virtual void PrimitiveOperation2(){
        std::cout << "ConcreteA Operation2\n";
    }
};

class ConcreteClassB: public AbstractClass{
protected:
    virtual void PrimitiveOperation1(){
        std::cout << "ConcreteB Operation1\n";
    }
    virtual void PrimitiveOperation2(){
        std::cout << "ConcreteB Operation2\n";
    }
};
Copier après la connexion

Fonctionnalités de la méthode modèle :

Le modèle de méthode modèle reflète ses avantages en déplaçant un comportement inchangé vers la classe parent et en supprimant le code en double dans la sous-classe.

Le modèle de méthode modèle fournit une bonne plate-forme de réutilisation du code.

Ce qui précède est le contenu d'une brève introduction au modèle de méthode de 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