C++与设计模式(5)——原型模式

原型模式

看这个模式的第一感觉,这并不是一个高大上的设计模式,而是规范化代码的一个小技巧。

原型模式是通过指定实例,通过拷贝来创建新的对象。在C++中,原型模式是通过提供clone接口和重写拷贝构造函数(深拷贝)来实现的。

class prototype
{
public:
    prototype(){}
    virtual ~prototype(){}
    virtual prototype* clone() = 0;//纯虚函数,需要供继承者自行实现
};

// 派生自Prototype,实现Clone方法
class concreateprototype1:public prototype
{
public:
    concreateprototype1(){}
    concreateprototype1(const concreateprototype1&){}
    virtual ~concreateprototype1(){}
    virtual prototype* clone(){return new concreateprototype1(*this);}
};

// 派生自Prototype,实现Clone方法
class concreateprototype2:public prototype
{
public:
    concreateprototype2(){}
    concreateprototype2(const concreateprototype2&){}
    virtual ~concreateprototype2(){}
    virtual prototype* clone(){return new concreateprototype2(*this);}
};

int main()
{
    concreateprototype1 c1;
    prototype *p1 = c1.clone();
    concreateprototype2 c2;
    prototype *p2 = c2.clone();
}

一般在C++的书籍中会介绍深浅拷贝的概念,有了这个概念去理解这个模式是非常简单的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值