原型模式
//由于项目内用的都是C++ 我写的伪代码都是用C++实现的 另外原理我可能介绍的比较少 但也会有部分 主要是代码实现
原型模式属于对象创建模式,用原型实例指定创建对象的种类,并且通过创建拷贝这些原型创建新的对象。
工厂模式 对新产品 的适应能力比较弱。来看看原型模式:
1.客户角色 :让一个原型克隆自己来得到一个新对象
2.抽象原型角色:实现了自己的clone 方法,扮演这种角色的类通常是抽象类,且它具有
许多具体的子类。
3.具体原型角色:被复制的对象,为抽象原型角色的具体子类。
class AbstractPrototype{
private:
public;
AbstractPrototype()
{
}
~AbstractPrototype()
{
}
virtual AbstractPrototype* Clone() = 0;
};
class ConcreatePrototype1:public AbstractPrototype{
private:
public:
ConcreatePrototype1()
{
}
ConcreatePrototype1(const ConcreatePrototype1&)
{
}
virtual ~ConcreatePrototype1()
{
}
virtual AbstractPrototype* Clone()
{
return new ConcreatePrototype1(*this);
}
};
class ConcreatePrototype2:public AbstractPrototype{
private:
public:
ConcreatePrototype2()
{
}
ConcreatePrototype2(const ConcreatePrototype1&)
{
}
virtual ~ConcreatePrototype2()
{
}
virtual AbstractPrototype* Clone()
{
return new ConcreatePrototype2(*this);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
AbstractPrototype *pPrototype1 = new ConcreatePrototype1();
AbstractPrototype *pPrototype2 = pPrototype1->Clone();
AbstractPrototype *pPrototype3 = new ConcreatePrototype2();
AbstractPrototype *pPrototype4 = pPrototype3->Clone();
return 0;
}
//理解的不透彻 现在这个程序感觉原型模式必须有个虚基类提供个Clone方法 返回个类指针 派生类实现这个方法就OK了呢
//随着学习 理解会更深刻 我会回来完善我的程序 各位大侠请帮忙点评