Maison > Article > développement back-end > Modèle de conception C brève introduction au modèle de méthode de modèle
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 :
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; }
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"; } };
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) !