![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective-java
干了这碗毒鸡汤
有志者,自有千方百计。
展开
-
第2条:遇到多个构造器参数时要考虑用构建器
静态工厂和构造器有个共同的的局限性:它们都不能很好的扩展大量可选的参数。举个栗子:一个饮料类,不同的饮料,包含相同的参数(水,卡路里,脂肪量,糖量……),也有不同的参数,有的含有矿物质,胡萝卜素 , 钠 , XX酸……对于这样的类,我们该如何设计构造器?传统构造器的困境对于传统的构造器,有多少个值域就要去写多少个构造器。比如饮料公共参数是8个,那么至少要写8个构造器出来,可选参数从1个到8个。pub原创 2017-07-26 16:08:31 · 308 阅读 · 0 评论 -
第1条:考虑用静态工厂方法代替构造器
转载http://liwenshui322.iteye.com/blog/1267202Java 服务提供者框架介服务提供者框架是指:多个服务提供者实现一个服务,系统为客户端提供多个实现,并把他们从多个实现中解耦出来。服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性。例如,JDBC,JMS等就是用了服务提供者框架。 他们之间的关系如下图:1.服务具体实现类和服务提供者实现类是服务提转载 2017-07-20 15:03:07 · 266 阅读 · 0 评论 -
第3条:用私有构造器或者枚举类型强化Singleton属性
转载于viclee Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。 单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管转载 2017-08-03 12:42:06 · 319 阅读 · 0 评论 -
第4条:通过私有构造器强化不可实例化的能力
有的时候,你可能需要编写只需要包含静态方法和静态域对的类。比如java.util.Math 或者 java.util.Arrays 等工具类,它们不希望被实例化。可能你也需要编写这样的工具类,而不愿被实例化,被继承。我们可以编写一个类,让它包含一个私有的构造器,这个类就不能被实例化和被继承了。 public class UtilityClass { // Suppress default c原创 2017-08-03 15:23:08 · 307 阅读 · 0 评论 -
第5条:避免创建不必要的对象
一般来说,最好能重用对象而不是在每次需要的时候就创建一个相同功能的新对象。重用方式既快速,又流行。如果对象是不可变的,它就始终可以被重用。 举个栗子 1: 一个极端的语句:String s = new String("GoodMan"); 该语句每次执行都会创建一个新的String 实例,很明显这样的功能一样的实例是完全没有必要的。 改进:String s = "GoodMan";转载 2017-08-03 17:32:41 · 263 阅读 · 0 评论