第4章创建型设计模式.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章创建型设计模式 第4章创建型设计模式 原型模式 模式扩展 相似对象的复制 很多情况下,复制所得到的对象与原型对象并不是完全相同的,它们的某些属性值存在异同。通过原型模式获得相同对象后可以再对其属性进行修改,从而获取所需对象。如多个学生对象的信息的区别在于性别、姓名和年龄,而专业、学院、学校等信息都相同,为了简化创建过程,可以通过原型模式来实现相似对象的复制。 第4章创建型设计模式 原型模式 模式扩展 相似对象的复制 参考代码 演示…… 第4章创建型设计模式 本节小结 原型模式是一种对象创建型模式,用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建另外一个可定制的对象,无须知道任何创建的细节。原型模式的基本工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝原型自己来实现创建过程。 原型模式包含三个角色:抽象原型类是定义具有克隆自己的方法的接口;具体原型类实现具体的克隆方法,在克隆方法中返回自己的一个克隆对象;让一个原型克隆自身从而创建一个新的对象,在客户类中只需要直接实例化或通过工厂方法等方式创建一个对象,再通过调用该对象的克隆方法复制得到多个相同的对象。 在Java中可以直接使用Object提供的clone()方法来实现对象的克隆,能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个Java类支持复制。 第4章创建型设计模式 本节小结 在浅克隆中,当对象被复制时它所包含的成员对象却没有被复制;在深克隆中,除了对象本身被复制外,对象包含的引用也被复制,也就是其中的成员对象也将复制。在Java语言中,通过覆盖Object类的clone()方法可以实现浅克隆;如果需要实现深克隆,可以通过序列化等方式来实现。 原型模式最大的优点在于可以快速创建很多相同或相似的对象,简化对象的创建过程,还可以保存对象的一些中间状态;其缺点在于需要为每一个类配备一个克隆方法,因此对已有类进行改造比较麻烦,需要修改其源代码,并且在实现深克隆时需要编写较为复杂的代码。 原型模式适用情况包括:创建新对象成本较大,新的对象可以通过原型模式对已有对象进行复制来获得;系统要保存对象的状态,而对象的状态变化很小;需要避免使用分层次的工厂类来创建分层次的对象,并且类的实例对象只有一个或很少的几个组合状态,通过复制原型对象得到新实例可能比使用构造函数创建一个新实例更加方便。 第4章创建型设计模式 建造者模式 模式适用环境 在以下情况下可以使用建造者模式: 需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性。 需要生成的产品对象的属性相互依赖,需要指定其生成顺序。 对象的创建过程独立于创建该对象的类。在建造者模式中引入了指挥者类,将创建过程封装在指挥者类中,而不在建造者类中。 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。 第4章创建型设计模式 建造者模式 模式应用 (1) JavaMail(一步一步构造一个完整的邮件对象,然后发送) …… //由邮件会话对象新建一个邮件消息对象 MimeMessage message=new MimeMessage(session); //设置邮件地址 InternetAddress from=new InternetAddress(""); message.setFrom(from);//设置发件人 InternetAddress to=new InternetAddress(to_mail); message.setRecipient(Message.RecipientType.TO,to);//设置收件人,并设置其接收类型为TO message.setSubject(to_title);//设置主题 message.setText(to_content);//设置信件内容 message.setSentDate(new Date());//设置发信时间 message.saveChanges();//存储邮件信息 Transport transport=session.getTransport("smtp"); transport.connect("","test","test"); transport.sendMessage(message,message.getAllRecipients()); …… 第4章创建型设计模式 建造者模式 模式应用 (2) 在很多游戏软件中,地图包括天空、地面、背景等组成部分,人物角色包括人体、服装、装备等组成部分,可以使用建造者模式对其进行设计,通过不同的具体建造者创建不同类型的地图或人物。 第4章创建型设计模式 建造者模式 模式模式

文档评论(0)

xinfeiyang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档