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

    设计模式之创建型模式.doc

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

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

    设计模式之创建型模式.doc

    软件英才网 软件行业驰名招聘网站设计模式之创建型模式来自何静媛的博客创建型模式:    抽象工厂模式    工厂方法模式    建造者模式    原型模式    单例模式创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象 对于抽象工厂模式和工厂方法模式查看上篇博文设计模式之工厂模式,下面就来介绍一下其余3个模式 建造者模式 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型即可,而具体建造的过程和细节就不需要知道了。个人理解:建造者模式就是将一个复杂对象的构件过程抽象出来(PersonBuilder),不让任何人遗忘当中的任何一步。然后创建一个指挥者类(Director),用它类控制建造过程,也用它来隔离用户与建造过程的关联课本实例:建造小人与工厂方法模式和抽象工厂模式对比:举例说明:建造超人工厂方法:通过不同的工厂生产不同的超人,注重的是整体对象的创建方法建造者:注重的是部件构件的过程,旨在通过一步步的精确构造创建出一个复杂的对象。在这个例子中主要是通过具体建造方法建造超人。抽象工厂:通过不同的工厂生产一系列超级英雄,注重完整性。如图:             代码如下:csharp view plaincopyprint?1. /抽象类  2.   abstract class personbuilder  3.          4.            protected Graphics g;  5.            protected Pen p;  6.      7.            public personbuilder(Graphics g, Pen p)  8.              9.                this.g = g;  10.                this.p = p;  11.      12.              13.            public abstract void buildhead();  14.            public abstract void buildbody();  15.            public abstract void buildarmleft();  16.            public abstract void buildarmright();  17.            public abstract void buildlegleft();  18.            public abstract void buildlegright();  19.        20.          21.    22.  /指挥者  23.   class personDirector  24.          25.            private personbuilder pb;  26.            public personDirector(personbuilder pb)  27.              28.                this.pb = pb;  29.      30.              31.            public void createperson()  32.              33.                pb.buildhead();  34.                pb.buildbody();  35.                pb.buildarmleft ();  36.                pb.buildarmright ();  37.                pb.buildlegleft();  38.                pb.buildlegright();  39.      40.              41.          42.    原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需要知道任何可创建的细节。课本实例:简历复印代码如下:csharp view plaincopyprint?1. public object Clone()  2.                    3.                      return (object)this.MemberwiseClone();  4.                    5.      6.    注:MemberwiseClone()方法是这样,如果字段是值类型,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象,因此,原始对象及其复本引用同一对象  总结:克隆是创建作为当前实例副本的新对象。克隆分为深度克隆和浅度克隆深度克隆:会克隆当前实例的所有所有成员.浅度克隆:只会克隆当前实例的所有值类型的。浅度克隆Object类为我们提供了一个受保护的克隆方法MemberwiseClone()深度克隆要我们自己实现MemberwiseClone方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。个人理解:    浅拷贝和深拷贝浅拷贝对于引用的内容来说只是复制了地址,然后给地址赋值,但深拷贝的引用内容却是根据每个参数不同来实例出一个新的对象浅拷贝只是拷贝了引用,指向一个地址空间,而深拷贝是根据参数的不同对这个引用创建新的实例单例模式通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 注意问题:   多线程的程序中,多个线程同时,注意是同时访问Singleton类,调用GetInstance()方法,会有可能造成创建多个实例的。 线程加锁  lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。课本实例:只实例化一次工具箱窗体代码如下:csharp view plaincopyprint?1. private  FormToolbox()  2.               3.                 InitializeComponent();  4.               5.             public static FormToolbox GetInstance()  6.               7.                 if (ftb = null | ftb.IsDisposed)  8.                   9.                     lock (syncRoot)  10.                       11.                         if (ftb = null | ftb.IsDisposed)  12.                           13.                             ftb = new FormToolbox();  14.                             ftb.MdiParent = Form1.ActiveForm;  15.       16.                           17.                       18.                   19.                     return ftb;  20.                   21.               22.    单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 有需要请联系我们

    注意事项

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

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




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

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

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

    收起
    展开