[创建型模式] Prototype
时间:2011-03-10 来源:Cheney Shen
Prototype.h
//
// Prototype.h
// Prototype
//
// Created by Cheney Shen on 11-2-20.
// Copyright 2011年 __MyCompanyName__. All rights reserved.
//
#ifndef _PROTOTYPE_H_
#define _PROTOTYPE_H_
class Prototype
{
public:
virtual ~Prototype();
virtual Prototype* Clone() const = 0;
protected:
Prototype();
private:
};
class ConcretePrototype:public Prototype
{
public:
ConcretePrototype();
ConcretePrototype(const ConcretePrototype& cp);
~ConcretePrototype();
Prototype* Clone() const;
protected:
private:
};
#endif //~_PROTOTYPE_H_
Prototype.cpp
//
// Prototype.cpp
// Prototype
//
// Created by Cheney Shen on 11-2-20.
// Copyright 2011年 __MyCompanyName__. All rights reserved.
//
#include "Prototype.h"
#include <iostream>
using namespace std;
Prototype::Prototype()
{
}
Prototype::~Prototype()
{
}
Prototype* Prototype::Clone() const
{
return 0;
}
ConcretePrototype::ConcretePrototype()
{
}
ConcretePrototype::~ConcretePrototype()
{
}
ConcretePrototype::ConcretePrototype(const ConcretePrototype& cp)
{
cout<<"ConcretePrototype copy..."<<endl;
}
Prototype* ConcretePrototype::Clone() const
{
return new ConcretePrototype(*this);
}
main.cpp
//
// main.cpp
// Prototype
//
// Created by Cheney Shen on 11-2-20.
// Copyright 2011年 __MyCompanyName__. All rights reserved.
//
#include "Prototype.h"
#include <iostream>
using namespace std;
int main (int argc, const char * argv[]) {
Prototype* p = new ConcretePrototype();
Prototype* p1 = p->Clone();
delete p1;
p1 = NULL;
return 0;
}
相关阅读 更多 +










