如何更好地创建和销毁对象.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何更好地创建和销毁对象 ——应用工厂和单例等模式 常规的对象创建方式 GOF设计模式中的工厂模式 GOF设计模式中的单例模式 利用反射技术动态创建对象 利用依赖注入高效地创建对象 正确地销毁对象实例 在本单元重点了解如下知识点 1、对象创建是面向对象编程中不可缺的一件事情 也是在所有的面向对象编程开发中开发人员所必须要面对的问题,因为应用系统中的业务活动是由各个对象之间的相互交互而构成的。 2、频繁地创建对象实例的后果 (1)不仅会降低应用系统的整体运行的性能。 (2)也增加了不必要的类之间的藕合关系。? 4、有必要合理地进行对象的创建以降低类关系的藕合度 两个类之间存在或者出现有包括控制关系、调用关系、数据传递关系等情形时,这两个类也就产生了耦合! 我们先关注对象的创建方面的问题… 3、在涉及对象创建时我们应该要思考的问题 (1)如何正确和合理地创建出对象实例? (2)什么时候应该创建对象实例? (3)如何在运行中动态地创建对象实例? (4)如何保证所创建出的对象实例能够适时地被销毁? 1、各种面向对象语言中提供的常规的对象创建方式 (1)利用new语句创建对象 UserInfoPO oneUserInfoPO=new UserInfoPO(); (2)Java语言中的对象生存期主要为如下三个阶段 创建、使用和销毁(删除)。 (3)常规的对象创建方式所存在的问题 服务请求者与服务提供者之间紧密藕合 有些类的对象实例是不应该重复地创建的——比如数据库连接Connection对象等 某些类只允许产生出单例的对象实例 对于对象创建时的这些基本的要求,采用普通的new操作符语句是做不到的。 因此,如何能够更高效地创建对象实例、并且松藕合以达到程序模块的可扩展性? 2、如何更好地创建对象 (1)利用工厂模式(工厂方法和抽象工厂) (2)利用单例模式 (3)利用控制反转和依赖注入(IoC/DI)模式 (4)Builder(构建者)模式创建组合类型的对象 这些模式都是对面向对象编程技术中的封装性、多态性的具体应用。 3、GOF设计模式中的工厂模式 (1)工厂模式主要是为创建对象提供一种接口 封装创建对象的细节过程,使得对象的使用方根本无需关心这个目标对象是如何产生和创建的 能够达到将创建对象实例的职责与使用该对象实例的职责相互分开的目的。 (2)工厂模式的UML类图 (3)工厂模式中的工厂方法的代码示例 4、GOF设计模式中的单例模式 (1)所谓单例设计模式是只为某个类提供单一的对象实例 (2)为什么要应用单例设计模式? 避免重复地创建对象以节省系统资源——减少因为频繁的对象构造过程所带来的应用上的性能损失; 在设备访问或者IO输出时也只允许有一个对象实例在访问操作(如控制打印机、磁盘文件IO访问等)以保证设备操作逻辑的正确性; 唯一性:如读取项目中的属性配置文件中的数据的类; 希望统一应用系统的执行入口点——如Struts框架中的前端控制器ActionServlet组件为单例类。 (3)UML类图 5、编程实现单例模式 (1)实现单例模式的思路 一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称); 当调用这个getInstance方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例; 同时还应该将该类的构造函数定义为私有方法,这样其它处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。 (2)代码示例 6、利用Java反射技术动态创建类的对象实例 (1)利用Java反射技术动态创建对象的基本步骤 首先要获取一个要操作的类的对象,该对象属于java.lang.Class类的实例; 然后再通过Class类中的newInstance方法动态构造出对应的类的对象实例。 (2)代码示例 7、利用依赖注入技术高效地创建对象实例 (1)Spring框架中的控制反转模式和依赖注入技术 IOC 是一种使应用程序“逻辑外在化”的设计模式,提供服务的组件类的对象实例是被“注入”的而不是被“直接写入”到请求者(客户端)的代码中。 将组件类之间的依赖关系转移到系统外部的配置文件中,避免在调用类中硬编码实现类。 8、利用Spring 依赖注入技术创建对象实例示例 (2)为什么要应用IOC 能够大大地减少服务的请求者对服务提供者的特定实现逻辑的依赖 提高了系统中的各个组件类的可移植性和可重用度。 我们现在再关注对象的销毁… 1、文件IO流对象实例的创建和销毁 ——正确地关闭所创建出的IO流类的对象实例 2、Socket类的对象实例的创建和销毁 ——正确

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档