毕业设计外文资料翻译--第二章 创建和销毁对象

毕业设计外文资料翻译--第二章 创建和销毁对象

ID:47039335

大小:61.00 KB

页数:11页

时间:2019-07-04

毕业设计外文资料翻译--第二章 创建和销毁对象_第1页
毕业设计外文资料翻译--第二章 创建和销毁对象_第2页
毕业设计外文资料翻译--第二章 创建和销毁对象_第3页
毕业设计外文资料翻译--第二章 创建和销毁对象_第4页
毕业设计外文资料翻译--第二章 创建和销毁对象_第5页
资源描述:

《毕业设计外文资料翻译--第二章 创建和销毁对象》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、毕业设计外文资料翻译学院:专业班级:学生姓名:学号:指导教师:外文出处:JoshuaBloch.EffectiveJava[M].NewJersey:AddisonWesley,2001.附件:1.外文资料翻译译文;2.外文原文指导教师评语:原文所涉及内容与课题有关联,翻译难度适中。该生所作的译文,术语的使用基本准确,译文内容与原文含义基本相符。译文格式符合规范,按时完成了外文翻译任务。签名:2015年10月14日1.外文资料翻译译文第二章创建和销毁对象本章关注创建和销毁对象:何时以及如何创建对象,何时以及如何避免创建对象,如何确保对象能够及时销毁,以及如何管理对象

2、销毁之前必须进行的各种清理动作。第1条:考虑提供静态工厂方法代替构造器对于类而言,为了让客户端获取它自身的一个实例,最常用的的方法就是提供一个公有的构造器。还有另一个不太广为人知的技术,也应该在每个程序员的工具箱中占有一席之地。一个类可以提供一个公有的静态的工厂方法,这只是简单的返回类的实例的静态方法。下面是一个来自Boolean(基本类型boolean的包装类)的简单的例子。这个在1.4版本中增加的静态工厂方法,将boolean基本类型值转换成了一个Boolean对象引用:publicstaticBooleanvalueOf(booleanb){return(b?

3、Boolean.TRUE:Boolean.FALSE);}类可以通过静态工厂方法来提供它的客户端,而不是通过构造器。提供静态工厂方法代替公有的构造器,这样做优缺点都有。静态工厂方法不同于构造器的第一大优点是,它们有名称。如果构造器的参数本身没有确切的描述正被返回的对象,具有适当名称的静态工厂会使一个类更容易使用,生成的客户端代码更容易阅读。例如,构造器BigInteger(int,int,Random)返回的BigInteger可能为素数,如果用名为BigInteger,probablePrime的静态工厂方法来表示的话,显然会更好。(这个静态工厂方法最终被添加到1

4、.4版本中)一个类只能有一个带有指定签名的构造器。程序员已经知道如何避开这一限制,通过提供两个构造器,它们的参数列表只是在参数类型的顺序上有所不同。这其实是一个糟糕的注意。面对这样的API,用户永远也记不住该用哪个构造器,结果常常会调用错误的构造器。用户读到使用了这些构造器的代码时,如果没有参考类的文档,往往不知所云。由于静态工厂方法有名称,所以当一个类只有一个给定的签名时它们不受上述的限制。当一个类需要多个带有相同签名的构造器时,你应该考虑就用静态工厂方法代替一个或多个构造器,并且静态工厂方法应慎重地选择名称以便突出他们之间的区别。静态工厂方法与构造器不同的第二大

5、优势在于,不必在每次调用它们的时候都创建一个新对象。这使得不可变类(见第13条)可以使用预先构建好的实例,或者将构建好的实例缓存起来,进行重复利用,从而避免创建不必要的重复对象。Boolean.valueOf(boolean)方法说明了这项技术:它从来不创建对象。如果程序经常请求创建相同的对象,并且创建对象的代价很高,则这项技术可以极大地提升性能。静态工厂方法能够为重复的调用返回相同对象,这样有助于类总能严格控制在某个时刻哪些实例应该存在。编写实例受控的类有两个原因。首先,它允许类确保它是一个单例模式(见第2条)。第二,它还使得不可变的类确保不会存在两个相等的实例:

6、即当且仅当a==b的时候才有a.equals(b)。如果类保证了这一点,它的客户端就可以使用==操作符来代替equals(Object)方法,这样可以导致提升性能。在第21条描述的enum类型实现了这一点,同时String.intern方法用限制的行式实现了它。静态工厂方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类型的对象。这样我们在选择返回对象的类时就有了更大的灵活性。这种灵活性的一种应用是,API可以返回对象,同时又不会使对象的类变成公有的。这种方式隐藏实现类会使API变得非常简洁。这项技术适用于基于接口的框架(interface-based

7、framework),因为这种接口为静态工厂方法提供了自然返回类型。例如,CollectionsFramework的集合接口有20个便利实现,分别提供了不可修改的集合、同步集合等等。几乎所有这些实现都通过静态工厂方法在一个不可实例化的类(java.util.Collections)中导出。所有返回对象的类都是非公有的。CollectionsFrameworkAPI比导出20个独立公有类的便利实现方式要小得多。这不仅仅是指API数量上的减少,也是概念意义上的减少。用户知道,被返回的对象是由相关的接口精确指定的,所以他们不需要阅读有关的类文档。此外,使用这种静态工厂

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。