
Effective笔记
文章平均质量分 84
HimmaQF
永远不要让别人对你说,你不能做一件事,哪怕是自己也不可以。
展开
-
复合优先于继承
出发点: 与方法调用不同的是,继承打破了封装性。子类依赖于超类中特定功能的实现细节。超类可能跟随着版本不断的发生变化,如果真的发生变化,子类可能会受到影响。 对于专门为了继承设计、并且具有很好的文档说明的类来说,使用继承也是非常安全的,然而对于普通的类来说,进行跨包继承都是非常危险的。 这种情况多出现与一个类扩展另一个类的时候,不包括类实现接口以及接口的多继承。问题案例: ...原创 2018-03-22 16:03:36 · 1093 阅读 · 3 评论 -
采用静态工厂方法代替构造器
采用静态工厂方法代替构造器(构造方法)对于类而言,如果想让客户端获取自身的一个实例的话有两种方式。1.提供一个公有的构造方法。(new出该类的对象)2.类可以提供一个公有的静态的工厂方法,只是返回的类的实例。public final class Boolean implements java.io.Serializable, Comparable<Boolean> { p...原创 2018-03-20 11:14:15 · 269 阅读 · 0 评论 -
遇到多个构造器参数时要考虑用构建器
静态工厂和构造器有个共同的局限性:他们都不能很好的扩展到大量的可选参数。遇到多个构造器(构造方法)参数时,如何操作??? 方法一 :重叠构造器模式(可读性不好)原理:提供一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个构造器有两个可选参数,依次类推,直到最后一个构造器包含所有的可选参数。缺点:谁作为第一个可选参数是一个问题,因为后一个包含两个可选参数的构造器必须传递值给第一个可选...原创 2018-03-20 14:50:37 · 317 阅读 · 0 评论 -
私有构造器用途
私有构造方法的用途介绍* 使用私有构造方法实现单例 静态成员public class privateMethod { //使用私有构造方法实现单例 //静态成员 public static final privateMethod instance = new privateMethod(); private privateMethod() { } public void sa...原创 2018-03-20 15:54:59 · 1085 阅读 · 0 评论 -
避免创建不必要的对象
要点一一般来说,最好能重用对象而不是在每次需要的时候创建一个相同功能的新对象。反面例子String a=new String("hello world");该语句每次被执行的时候都会创建一个String实例,是完全没有必要的,如果此行代码在循环中则会创建成千上万的实例。改进后String a="hello world";这行代码执行后只用了一个String的实例,而不是每次执行都会创建一个新的实例...原创 2018-03-20 17:21:08 · 390 阅读 · 0 评论 -
覆盖equals时请遵守通用约定
覆盖equals时请遵守通用约定 equals方法起来似乎很简单,但是许多覆盖方式会导致很多错误,在此就不多说"覆盖(重写)"的含义。 在java中使用equals方法通常用来比较两个对象是否相等,如果你还在困扰equals和==的区别或者不知道为什么要覆盖equals方法,请先了解清楚再往下看。什么时候不需要覆盖equals方法?1.类的每个实例本质都是唯一的,例如Th...原创 2018-03-21 16:28:55 · 211 阅读 · 0 评论