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

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

Définition : utilisez des instances de prototypes pour spécifier les types d'objets à créer et créez de nouveaux objets en copiant ces prototypes.

Le patron du prototype consiste en fait à créer un autre objet personnalisable à partir d'un objet sans connaître aucun détail de la création.

Le mode prototype prend principalement en compte la copie profonde et la copie superficielle. Dans la conception de classe C, le constructeur de copie est une copie superficielle, et lorsque l'opérateur d'affectation est surchargé, il s'agit d'une copie profonde.

Copie superficielle : toutes les variables de l'objet copié contiennent les mêmes valeurs​​de l'objet d'origine, et toutes les références à d'autres objets pointent toujours vers l'objet d'origine.

Copie complète : pointez la variable de l'objet de référence vers le nouvel objet copié au lieu de l'objet référencé d'origine.

Cas de test :

[code]int main(){
    //生成对象
    ConcretePrototype * conProA = new ConcretePrototype();
    //复制自身
    ConcretePrototype *conProB = conProA->Clone();   //先clone后调用拷贝构造函数, Output: clone constructor

    delete conProA;
    conProA = NULL;

    delete conProB;
    conProB = NULL;

    return 0;
}
Copier après la connexion

Implémentation du prototype

[code]//接口
class Prototype{
public:
    Prototype(){}
    virtual ~Prototype(){}
    virtual Prototype *Clone() = 0;
};

//实现
class ConcretePrototype: public Prototype{
public:
    ConcretePrototype(): m_counter(0) {}
    virtual ~ConcretePrototype(){}
    //拷贝构造函数
    ConcretePrototype(const ConcretePrototype &rhs){
        std::cout << "constructor\n";
        m_counter = rhs.m_counter;
    }

    //复制自身
    virtual ConcretePrototype *Clone(){
        //调用拷构造函数
        std::cout << "clone\n";
        return new ConcretePrototype(*this);
    }

private:
    int m_counter;
};
Copier après la connexion

Ce qui précède est le contenu du mode prototype du modèle de conception C. Pour plus de contenu connexe, veuillez suivre. le site 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