Effective Java-创建 大发彩_票平台出租 和销毁对象

一、考虑用静态方法代替构造器
? 类可以通过静态工厂方法来提供它的客户端,而不是通过构造器。
优势:
? 1、它们有名称,可以根据名称将创建对象的行为表达的更清楚。
? 2、可以不必在每次调用它们的时候都返回一个新对象。这使得不可变类可以使用预先构建好的实例,或者将构建好的实例缓存起来,进行重复利用。
? 3、它们可以返回原返回类型的任何子类型的对象。API可以返回对象,同时又不会使对象的类变成公有的。以这种方式隐藏实现细节。
? 4、在创建参数化实例的时候,它们使代码变得简洁。
缺点:
? 1、类如果不含公有的或者受保护的构造器,就不能被子类化。
? 2、它们与其它的静态方法实际上没有任何区别。

二、遇到多个构造器参数时要考虑使用构建器。

大发彩_票平台出租

地址一:【hubawl.com】狐霸源码论坛

地址二:【bbscherry.com】

重叠构造器模式可行,但是当有许多参数的时候,客户端代码会很难编写,并且难以阅读。一长串类型相同的参数会导致一些微妙的错误。如果客户端不小心颠倒了其中两个参数的顺序,编译器也不会报错,但是程序在运行时会出现错误行为。
? 这种情况下,另一种替代方法是使用JavaBean模式。通过setter方法设置必要参数。遗憾的是,这种模式自身有着很重要的缺点。因为构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态。与此相关的另一点不足在于,这种模式阻止了类做成不可变类的可能。
? 幸运的事,还有第三种替代方法,就是Builder模式。不直接生成想要的对象,而是让客户端利用必要的参数调用构造器,生成一个Builder对象,然后在Builder对象上调用类似setter的方法,来设置每个相关的值。最后,客户端利用无参的builder方法生成不可变对象。这种方式对于参数的增加比较灵活,易于阅读,可以对参数增加约束条件。它也有自身的不足,比如在某些十分注重性能的情况下,它的开销可能就成问题了。该模式比重叠构造器更加冗长,因此它只有在很多参数的时候才使用,特别是当大多数参数是可选的时候。

三#、用私有构造器或者枚举类型强化Singleton属性
?

四、通过私有构造器强化不可实例化的能力。
? 对于不可实例化的类,将它的构造器变成私有的。比如只包含静态方法和静态域的类。

五、避免创建不必要的对象
? 本条目并不意味着“我们应该要尽可能地避免创建对象”。由于小对象的构造器只做很少量的显示工作,创建和回收动作是非常廉价的。反之,通过维护对象池来避免创建对象并不是一个很好的做法,除非池中的对象是重量级的(典型例子就是数据库连接)。

六*、消除过期的对象引用
?

七#、避免使用终结方法

原文地址:http://blog.51cto.com/13883656/2149053

时间: 2024-12-07 20:06:38

Effective Java-创建 大发彩_票平台出租 和销毁对象的相关文章

超详细java中 大发彩_票平台搭建 的ClassLoader详解

ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassLoader的加载机制,也有利于我们编写出更高效的代码.ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了.但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载.想想也是的,一次性加载那么多jar包那么多class,那内存不崩溃.本文的目的也是学习ClassLoader这种加载机制. 大发彩

分享一篇耗子源码论坛大发彩_票平台搭建教程

大发彩_票平台搭建 Q1446595067在之前的工作,一直是以Android为主,前端为辅.经过了几个项目,也基本了解了前后端数据交互到底是怎么回事儿.但是在做项目的过程中经常有这个问题,项目初期需求定稿开始开发工作期间,服务端的同事需要搭建数据库,搭框架之类的工作,而同样的移动端或前端也开始撘架构或写页面,在写页面的时候不免要用到数据.此时,服务端的同事很可能因为工作进度还没有完成接口的开发.这个时候,如果不会服务端开发的话,我们一般只能在本地模拟一些假数据来使用,或者等着后台提供接口-.但

C++-类和动态内存分配 大发彩_票平台开发

大发彩_票平台开发 地址一:[hubawl.com]狐霸源码论坛地址二:[bbscherry.com] 类和动态内存分配 动态内存和类 C++在分配内存时是让程序在运行时决定内存分配,而不是在编译时决定. 这样,可根据程序的需要,而不是根据一系列严格的存储类型规则来使用内存.C++使用new和delete运算符来动态控制内存. 1.1. 复习示例和静态类成员 这个程序使用了一个新的存储类型:静态类成员. //strngbad.h#include<iostream>#ifndef STRNGBA

下载大发彩_票平台

下载大发彩_票平台地址一:[hubawl.com]狐霸源码论坛地址二:[bbscherry.com] 项目开发完毕后,需要将代码放到服务器上,这样用户才能访问.接下来我们一步一步来进行一波部署操作 打包上传代码 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前服务器IP或*,如: ALLOWED_HOSTS = ["",]这个配置就是允许别人通过哪个ip访问你,表示所有ip 上线时还要将配置中的DEBUG改为False 不同系统如何传代码 wind

Python的time库和文本进度条 大发彩_票平台搭建

大发彩_票平台搭建 地址一:[hubawl.com]狐霸源码论坛地址二:[bbscherry.com] 是Python中处理时间的标准库1.time库包括三类函数 时间获取:time() ctime() gmtime()时间格式化:strftime() strptime()程序计时:sleep(), perf_counter()2.时间获取 3.时间格式化 4.程序计时 5.进度条实例 #textProBarV1.pyimport timescale = 50print("执行开始".

python中的全大发彩局票网站开发变量与局部变量的区别

全局变量与大发彩局票网站开发haozbbs.comQ1446595067局部变量的本质区别在于作用域: 全局变量是在整个py文件中声明的,全局范围内都能访问: 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就会崩掉. 如果在函数内部定义某个与全局变量一样名称的局部变量,就可能导致意外的效果,不建议这样使用,这样会使程序不健全.例1: def fun(x):y=2print("乘法的运行结果:",x*y) num1=1print("初始n

贝尔级数在构造杜 大发彩_票源码下载 教筛卷积中的应用

学了一发贝尔级数 (划掉)人赢(划掉)zzs好强啊,rqy好巨啊 群里神仙讨论-- 贝尔级数只针对积性函数,如无特殊说明下文函数均为积性函数. 定义f模p的贝尔级数为: fp(x)=∑0≤if(pi)xifp(x)=∑0≤if(pi)xi 特别的,对于完全积性函数来说: fp(x)=11?f(p)xfp(x)=11?f(p)x 例如,ep(x)=1,1p(x)=11?x,idp(x)=11?px,μp(x)=1?x,(μ2)p(x)=1+x,(id?μ)p(x)=1+px,?p(x)=1?x1?

北京_赛车平台出租和视频播放View的扩展

北京_赛车平台出租 VideoView 是android 系统提供的一个媒体播放显示和控制的控件.其结构层次如下: 原型:VideoView extends SurfaceView implements MediaController.MediaPlayerControl 类结构: java.lang.Object ? android.view.View ? android.view.SurfaceView ? android.widget.VideoView 通过VideoView 的原型可知

上海快_三平台出租处理PS插件_安装教程

上海快_三平台出租 Q1446595067方法还是和之前一样的啦,首先到陌鱼社区下载"复古怀旧黑白人物照片PS修图扩展面板"然后复制文件夹即可,插件支持CC2015以上版本软件,下面看演示教程. 01.软件图标右键,打开文件位置. 02.打开文件夹"Required"-"CEP"-"extensions". 03.复制我们下载到的文件夹"com.adobe.Vitamin BW 2.0"至"ext