PROTOTYPE(原型)—对象创建型模式

提供一种创建对象方式,通过复制已经存在的对象产生新的对象。该模式的一个特点是,客户端在创建一个实例时候,不需要知道实例的具体类型。实现要有一个对应类的原型对象。在c++,该模式可方便用于反射。

 

举例:

1、定义原形接口 VehicleProtoType

//申明原型

class VehicleProtoType

{

//声明一个接口

public:

     virtual VehicleProtoType *Clone() =0;

};

实现一个接口

///实现 接口

//轿车类

class Car :public VehicleProtoType

{

public:

     int a;

public:

     Car();

     Car(Car& car);

     Car *Clone() ;

};

Car ::Car(){}

Car::Car(Car& car){

     a =200;

}

Car *Car::Clone(){

     return new Car(*this);

}

/

//公交车

class Bus :public VehicleProtoType

{

public:

     int b;

public:

     Bus();

     Bus(Bus& bus);

     Bus *Clone() ;

};

Bus ::Bus(){}

Bus::Bus(Bus& bus){

     b =200;

}

 

Bus *Bus::Clone(){

     return new Bus(*this);

}

 3、客户端使用接口

int _tmain(int argc, _TCHAR* argv[])

{

     Car *v1  = new Car();

     v1->a=100;

     VehicleProtoType *v2 =  v1->Clone();

 

     delete v1;

     delete v2;

     return 0;

}

 

说明:每个子类必须实现克隆自身的接口。动态创建一个对象,特别是组合对象为一个新对象时候,可以大大简化类的数目。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值