欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    prototype pattern称为原型模式.doc

    • 资源ID:69718064       资源大小:89.50KB        全文页数:4页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    prototype pattern称为原型模式.doc

    在软件系统中,经常面临着“某些结构复杂 的对象”的创建工作,由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。Prototype设计模式,就是为了解决如何 向“客户程序”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求的改变而改变。Prototype设计模式指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。要点:· Prototype设计模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有“稳定的接口”。· Prototype设计模式对于“如何创建易变类的实体对象”采用“原型克隆”的方法来做,它使得我们可以非常灵活地动态创建“拥有某些稳定接口”的新对象,所需要的工作仅仅是注册一个新类的对象(即原型),然后在需要的地方不断地Clone· Clone时要注意使用Deep Clone。深拷贝与浅拷贝区别:浅拷贝也称位拷贝,就是对象的数据成员之间的简单赋值,例如一个类我们没有具体定义其拷贝构造函数当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝。如果对象中没有其他的资源(如:堆,文件,系统资源等),则深拷贝和浅拷贝没有什么区别,但是如果有那么浅拷贝只是简单的引用这些资源,而深拷贝是会复制这些资源的。举例说明: 1 class People 2 3 public: 4 People(Hair *ha,int a) 5 :h(ha),age(a) 6 7 private: 8 Hair *h; 9 int age; 10 ;11 Hair * ha=new Hair(.);12 People p1(ha,a);13 People p2=p1;/浅拷贝 p2.h=p1.h, p2.age=p1.age那么如果是浅拷贝(位拷贝)只是简单的将Hair *h指针指向ha指针指向的资源。那么这里想象下这里如果在销毁p1的时候我们会释放p1.h所指向的资源,那么在使用p2就会发生错误!所以我们平常应该尽量少使用浅拷贝,这会给程序带来危害。当然从这里我们也可以得知,如果没有资源,深浅拷贝是没有任何区别的。 下面接着看原型模式: 1 class wheel 2 3 public: 4 wheel(std:string n,int l) 5 :name(n),loadCapacity(l) 6 7 wheel( ) 8 :name(""),loadCapacity(0) 9 10 void show();11 wheel * Clone();12 private:13 std:string name;14 int loadCapacity;15 ;16 void wheel:show( )17 18 std:cout<<"The wheel name is "<<name<<std:endl;19 std:cout<<"The wheel loadCapacity is "<<loadCapacity<<std:endl;20 21 22 wheel * wheel:Clone()23 24 return new wheel(name,loadCapacity);25 26 27 class Car28 29 public:30 Car(std:string color,wheel* w,std:string engine)31 32 :_color(color),_wheel(w),_engine(engine)33 34 virtual Car* Clone( )=0;35 virtual void Show( )=0;36 virtual void setColor(std:string color )=0;37 virtual Car( )38 protected:39 std:string _color;40 /有一个资源41 wheel* _wheel;42 std:string _engine;43 ;44 45 class BenzCar:public Car46 47 public:48 BenzCar(std:string color,wheel *w,std:string engine)49 :Car(color,w,engine)50 51 BenzCar( );52 void Show( );53 Car * Clone( );54 void setColor( std:string color );55 ;56 57 BenzCar:BenzCar( )58 59 delete _wheel;60 61 Car* BenzCar:Clone( )62 63 wheel* l=_wheel.Clone( ); 64 Car * pc=new BenzCar(_color,l, _engine );65 return pc;66 67 void BenzCar:Show( )68 69 std:cout<<"The car's color is"<<_color<<std:endl;70 _wheel.show( );71 std:cout<<"The car's engine is"<<_engine<<std:endl;72 73 74 void BenzCar:setColor(std:string color )75 76 _color=color;77 78 79 int main(int argc,char * argv)80 81 wheel *l=new wheel("michelin",160);82 BenzCar bc("red",l,"made in China");83 std:auto_ptr<Car> pc(bc.Clone( );84 pc-set("white");85 pc->Show( );86 bc->Show( );87 return 0;88 运行结果:案例:

    注意事项

    本文(prototype pattern称为原型模式.doc)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开