Maison > développement back-end > Tutoriel C#.Net > Modèle de conception C brève introduction au modèle de pont

Modèle de conception C brève introduction au modèle de pont

黄舟
Libérer: 2017-01-17 13:45:27
original
1272 Les gens l'ont consulté

Principe de réutilisation de la composition/agrégation (CARP) :

Préférez l'utilisation de la composition/agrégation au lieu de l'héritage de classe.

L'agrégation représente une "relation de propriété" faible, ce qui signifie que l'objet A peut contenir l'objet B, mais que l'objet B ne fait pas partie de l'objet A.

La synthèse représente une forte « relation de propriété », reflétant une relation stricte entre les parties et les touts, et les cycles de vie des parties et des touts sont les mêmes.

Avantages : donner la priorité à la composition/agrégation d'objets vous aidera à garder chaque classe encapsulée et concentrée sur une seule tâche. De cette façon, les classes et les hiérarchies d’héritage de classes restent petites et sont moins susceptibles de devenir le monstre incontrôlable que peut créer l’héritage.

L'héritage est une structure fortement couplée. Si la classe parent change, la sous-classe changera. Lorsque vous utilisez l’héritage, veillez à envisager de l’utiliser lorsqu’il s’agit d’une relation « est-une », plutôt que de l’utiliser à tout moment.

Mode Bridge (Bridge) : Séparez la partie abstraite de sa partie implémentation afin qu'elles puissent changer indépendamment.

L'implémentation fait référence à la classe abstraite et à ses classes dérivées utilisées pour implémenter leurs propres objets.

Cas de test :

[code]int main(){
    ConerectImplementorA *A = new ConerectImplementorA;
    ConerectImplementorB *B = new ConerectImplementorB;

    Abstraction *abs = new Abstraction;
    abs->setImplementor(A);
    abs->Operation();  //Output: ConerectImplementorA.

    Abstraction *abs2 = new Abstraction;
    abs2->setImplementor(B);
    abs2->Operation();  //Output: ConerectImplementorB.

    return 0;
}
Copier après la connexion

Mise en œuvre du modèle

[code]//Implementor类,实现类
class Implementor{
public:
    virtual void Operator(){      
    }
};

//具体实现类A
class ConerectImplementorA: public Implementor{
    virtual void Operator(){
        std::cout << "ConerectImplementorA.\n";
    }  
};

//具体实现类B
class ConerectImplementorB: public Implementor{
    virtual void Operator(){
        std::cout << "ConerectImplementorB.\n";
    }
};

//抽象类->桥接Implementor类
class Abstraction{
protected:
    Implementor *imp;    
public:
    void setImplementor(Implementor *imp){
        this->imp = imp;
    }
    virtual void Operation(){
        imp->Operator();
    }
};

//被提炼的对象
class RefinedAbstraction: public Abstraction{
    virtual void Operation()override{
        imp->Operator();
    }
};
Copier après la connexion

Résumé : Le système de mise en œuvre peut être classé sous plusieurs angles, et chaque classification peut changer, puis séparez-les plusieurs perspectives afin qu’elles puissent changer indépendamment et réduire le couplage entre elles.

Ce qui précède est une brève introduction au modèle de conception C et au modèle de pont. Pour plus de contenu connexe, 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