版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、如何更好地创建和如何更好地创建和销毁对象销毁对象 应用工厂和单例等模式应用工厂和单例等模式 p常规的对象创建方式常规的对象创建方式pGOFGOF设计模式中的工厂模式设计模式中的工厂模式pGOFGOF设计模式中的单例模式设计模式中的单例模式p利用反射技术动态创建对象利用反射技术动态创建对象p利用依赖注入高效地创建对象利用依赖注入高效地创建对象p正确地销毁对象实例正确地销毁对象实例在本单元重点了解如下知识点在本单元重点了解如下知识点1 1、对象创建是面向对象编程中不可缺的一件事情、对象创建是面向对象编程中不可缺的一件事情 也是在所有的面向对象编程开发中开发人员所必须要也是在所有的面向对象编程开发中
2、开发人员所必须要面对的问题,因为应用系统中的业务活动是由各个对象之面对的问题,因为应用系统中的业务活动是由各个对象之间的相互交互而构成的。间的相互交互而构成的。2 2、频繁地创建对象实例的后果、频繁地创建对象实例的后果(1 1)不仅会降低应用系统的整体运行的性能。)不仅会降低应用系统的整体运行的性能。(2 2)也增加了不必要的类之间的藕合关系。?)也增加了不必要的类之间的藕合关系。?4 4、有必要合理地进行对象的创建以降低类关系的藕合度、有必要合理地进行对象的创建以降低类关系的藕合度两个类之间存在或者出现有包括控制关系、调用关系两个类之间存在或者出现有包括控制关系、调用关系、数据传递关系等情形
3、时,这两个类也就产生了耦合!、数据传递关系等情形时,这两个类也就产生了耦合!我们先关注对象的创建方面的问题我们先关注对象的创建方面的问题3 3、在涉及对象创建时我们应该要思考的问题、在涉及对象创建时我们应该要思考的问题(1 1)如何正确和合理地创建出对象实例?)如何正确和合理地创建出对象实例?(2 2)什么时候应该创建对象实例?)什么时候应该创建对象实例?(3 3)如何在运行中动态地创建对象实例?)如何在运行中动态地创建对象实例?(4 4)如何保证所创建出的对象实例能够适时地被销毁?)如何保证所创建出的对象实例能够适时地被销毁?1 1、各种面向对象语言中提供的常规的对象创建方式、各种面向对象语
4、言中提供的常规的对象创建方式(1 1)利用)利用newnew语句创建对象语句创建对象 UserInfoPO oneUserInfoPO=new UserInfoPO(); UserInfoPO oneUserInfoPO=new UserInfoPO();(2 2)JavaJava语言中的对象生存期主要为如下三个阶段语言中的对象生存期主要为如下三个阶段创建、使用和销毁(删除)。创建、使用和销毁(删除)。(3 3)常规的对象创建方式所存在的问题)常规的对象创建方式所存在的问题p服务请求者与服务提供者之间紧密藕合服务请求者与服务提供者之间紧密藕合p有些类的对象实例是不应该重复地创建的有些类的对象实
5、例是不应该重复地创建的比如数比如数据库连接据库连接ConnectionConnection对象等对象等p某些类只允许产生出单例的对象实例某些类只允许产生出单例的对象实例 对于对象创建时的这些基本的要求,采用普通的对于对象创建时的这些基本的要求,采用普通的newnew操操作符语句是做不到的。作符语句是做不到的。 因此,如何能够更高效地创建对象实例、并且松藕合以因此,如何能够更高效地创建对象实例、并且松藕合以达到程序模块的可扩展性?达到程序模块的可扩展性?2 2、如何更好地创建对象、如何更好地创建对象(1 1)利用工厂模式(工厂方法和抽象工厂)利用工厂模式(工厂方法和抽象工厂)(2 2)利用单例模
6、式)利用单例模式(3 3)利用控制反转和依赖注入)利用控制反转和依赖注入(IoC/DI)(IoC/DI)模式模式(4 4)BuilderBuilder(构建者)模式创建组合类型的对象(构建者)模式创建组合类型的对象这些模式都是对面向对象编程技术中的封装性、多态这些模式都是对面向对象编程技术中的封装性、多态性的具体应用。性的具体应用。3 3、GOFGOF设计模式中的工厂模式设计模式中的工厂模式(1 1)工厂模式主要是为创建对象提供一种接口)工厂模式主要是为创建对象提供一种接口p封装创建对象的细节过程,使得对象的使用方根本无封装创建对象的细节过程,使得对象的使用方根本无需关心这个目标对象是如何产生
7、和创建的需关心这个目标对象是如何产生和创建的p能够达到将创建对象实例的职责与使用该对象实例的能够达到将创建对象实例的职责与使用该对象实例的职责相互分开的目的。职责相互分开的目的。(2 2)工厂模式的)工厂模式的UMLUML类图类图(3 3)工厂模式中的工厂方法的代码示例)工厂模式中的工厂方法的代码示例4 4、GOFGOF设计模式中的单例模式设计模式中的单例模式(1 1)所谓单例设计模式是只为某个类提供单一的对象实例)所谓单例设计模式是只为某个类提供单一的对象实例(2 2)为什么要应用单例设计模式?)为什么要应用单例设计模式?p避免重复地创建对象以节省系统资源避免重复地创建对象以节省系统资源减少
8、因为频减少因为频繁的对象构造过程所带来的应用上的性能损失;繁的对象构造过程所带来的应用上的性能损失;p在设备访问或者在设备访问或者IOIO输出时也只允许有一个对象实例在输出时也只允许有一个对象实例在访问操作(如控制打印机、磁盘文件访问操作(如控制打印机、磁盘文件IOIO访问等)以保证访问等)以保证设备操作逻辑的正确性;设备操作逻辑的正确性;p唯一性:如读取项目中的属性配置文件中的数据的类;唯一性:如读取项目中的属性配置文件中的数据的类;p希望统一应用系统的执行入口点希望统一应用系统的执行入口点如如StrutsStruts框架中框架中的前端控制器的前端控制器ActionServletAction
9、Servlet组件为单例类。组件为单例类。(3 3)UMLUML类图类图5 5、编程实现单例模式、编程实现单例模式(1 1)实现单例模式的思路)实现单例模式的思路p一个类能返回对象一个引用一个类能返回对象一个引用( (永远是同一个永远是同一个) )和一个获和一个获得该实例的方法(必须是静态方法,通常使用得该实例的方法(必须是静态方法,通常使用getInstancegetInstance这个名称);这个名称);p当调用这个当调用这个getInstancegetInstance方法时,如果类持有的引用不方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建为空就返回这个引用,如果
10、类保持的引用为空就创建该类的实例;该类的实例;p同时还应该将该类的构造函数定义为私有方法,这样同时还应该将该类的构造函数定义为私有方法,这样其它处的代码就无法通过调用该类的构造函数来实例其它处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。该类的唯一实例。 (2 2)代码示例)代码示例6 6、利用、利用JavaJava反射技术动态创建类的对象实例反射技术动态创建类的对象实例(1 1)利用)利用JavaJava反射技术动态创建对象的基本步骤反射技术动态创建对象的基本步骤p首先要获取一个要操作的类的
11、对象,该对象属于首先要获取一个要操作的类的对象,该对象属于java.lang.Classjava.lang.Class类的实例;类的实例;p然后再通过然后再通过ClassClass类中的类中的newInstancenewInstance方法动态构造出方法动态构造出对应的类的对象实例。对应的类的对象实例。(2 2)代码示例)代码示例7 7、利用依赖注入技术高效地创建对象实例、利用依赖注入技术高效地创建对象实例(1 1)SpringSpring框架中的控制反转模式和依赖注入技术框架中的控制反转模式和依赖注入技术pIOC IOC 是一种使应用程序是一种使应用程序“逻辑外在化逻辑外在化”的设计模式,的
12、设计模式,提供服务的组件类的对象实例是被提供服务的组件类的对象实例是被“注入注入”的而不是被的而不是被“直接写入直接写入”到请求者(客户端)的代码中。到请求者(客户端)的代码中。p将组件类之间的依赖关系转移到系统外部的配置文件将组件类之间的依赖关系转移到系统外部的配置文件中,避免在调用类中硬编码实现类。中,避免在调用类中硬编码实现类。8 8、利用、利用Spring Spring 依依赖注入技术创建对赖注入技术创建对象实例示例象实例示例(2 2)为什么要应用)为什么要应用IOCIOCp能够大大地减少服务的请求者对服务提供者的特定实能够大大地减少服务的请求者对服务提供者的特定实现逻辑的依赖现逻辑的依赖p提高了系统中的各个组件类的可移植性和可重用度。提高了系统中的各个组件类的可移植性和可重用度。我们现在再关注对象的销毁我们现在再关注对象的销毁1 1、文件、文件IOIO流对象实例的创建和销毁流对象实例的创建和销毁 正确地关闭所创建出的正确地关闭所创建出的IOIO流类的对象实例流类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品质量承诺书模板
- 中福在线服务员总结
- 中秋节主题演讲
- 为国争光课件教学课件
- 影响工期的因素分析及应对措施
- 元旦模板课件教学课件
- 菊花病害课件教学课件
- 安全的课件教学课件
- 四年级数学(四则混合运算带括号)计算题专项练习与答案汇编
- 自愿出资入股协议书(2篇)
- 安全驾驶培训
- GB/T 30595-2024建筑保温用挤塑聚苯板(XPS)系统材料
- 山东济南天桥区2024-2025学年八年级物理第一学期期中考试试题(含答案)
- 《中华人民共和国突发事件应对法》知识培训
- 托班语言夏天课程设计
- 黑龙江省哈尔滨市第一二四中学2024-2025学年七年级上学期期中考试数学试卷(含答案)
- 【招商银行】跨境电商行业深度报告:中国跨境电商产业升级“四小龙”吹响出海集结号
- 2024年软件资格考试系统集成项目管理工程师(中级)(基础知识、应用技术)合卷试卷及解答参考
- 《秋游》秋游教学课件
- 人教部编版六年级语文上册郝晓怡《盼》名师教学课件
- 2023年5月软考中级系统集成项目管理工程师下午真题
评论
0/150
提交评论