Eine kurze Einführung in C++-Entwurfsmuster und Prototypmuster

黄舟
Freigeben: 2017-01-18 14:57:58
Original
1280 Leute haben es durchsucht

Definition: Verwenden Sie Prototypinstanzen, um die zu erstellenden Objekttypen anzugeben, und erstellen Sie neue Objekte durch Kopieren dieser Prototypen.

Das Prototypmuster besteht eigentlich darin, aus einem Objekt ein weiteres anpassbares Objekt zu erstellen, ohne Einzelheiten der Erstellung zu kennen.

Der Prototypmodus berücksichtigt hauptsächlich tiefe Kopien und flache Kopien. Im C++-Klassendesign ist der Kopierkonstruktor eine flache Kopie, und wenn der Zuweisungsoperator überladen ist, ist er eine tiefe Kopie.

Flache Kopie: Alle Variablen des kopierten Objekts enthalten die gleichen Werte des Originalobjekts und alle Verweise auf andere Objekte verweisen weiterhin auf das Originalobjekt.

Tiefe Kopie: Richten Sie die Variable des Referenzobjekts auf das kopierte neue Objekt und nicht auf das ursprünglich referenzierte Objekt.

Testfall:

[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;
}
Nach dem Login kopieren

Prototyp-Implementierung

[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;
};
Nach dem Login kopieren

Das Obige ist der Inhalt des Prototypmodus des C++-Entwurfsmusters. Weitere Informationen finden Sie hier die chinesische PHP-Website (www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!