
effective-java
wezzdo
xxxxx
展开
-
考虑使用静态工厂代替构造器
创建和销毁对象 –静态工厂 优势: 静态工程方法与构造器不同的第一大优势 他们有名称.如果构造构造的产生本身没有确切的描述正返回的对象,具有适当名称的静态工厂会更容易使用,产生的代码更易阅读 静态工程方法与构造器不同的第二大优势 不必在每次调用它们都创建一个新的对象. 静态工程方法与构造器不同的第三大优势 它们可以返回类型的任何子类型对象,这样我们在原创 2017-09-07 22:06:53 · 243 阅读 · 0 评论 -
用私有构造器或枚举类型强化Singleton属性
单例 Singleton 指仅仅被实例化一次的类,Singleton 通常被用来代表本质上唯一的系统组件 实现Singleton有两种方法,两种方法都要把构造器私有化 并导出公有的静态成员. 1. public class Elvis{ public static final Elvis INSTANCE=new Elvis(); private Elvis(){原创 2017-09-28 15:58:54 · 394 阅读 · 0 评论 -
遇到多个构造器参数时要考虑用构建器Bulider
静态工厂和构造器有个共同的局限性:他们都不能很好的扩展大量的可选参数, 比如包装食品营养成分标签,含量,卡路里,等等,有可能会超过20个可选域,对于这样的类,应该用那种构造器或静态方法来写呢,构造器: 程序员一般习惯采用重载构造器来实现,第一个构造器,提供一个必要参数,第二个构造器提供,一个必要参数,一个可选参数,依次类推.public NutritionFacts(int servi原创 2017-09-21 21:26:12 · 190 阅读 · 0 评论 -
通过私有构造器强化不可实例化的能力
有时候,你可能需要编写值包含静态方法和静态域的类,这些来名声不好,因为有些人扎面向对象的语言中滥用这样的类来编写过程化的程序,尽管如此,它们也确实有它们特别的用处,我们可以利用这种类以,java.lang.Math或者java.util.Arrays的方式,把基本类型和素质类型上的相关方法组织起来,我们也可以通过java.util.collections的方式,把实现特定接口对象上的静态方法组织起来原创 2017-10-10 15:21:56 · 244 阅读 · 0 评论 -
使类和成员的可访问性最小化
要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块而言,是否隐藏内部数据和其他实现细节.设计良好的模块会隐藏所有的实现细节,把它的api和其他的实现清晰的隔离开来.然后模块之间只通过他们的api进行通信, 一个模块不需要知道其他模块的内部工作情况,这个概念被称为信息隐藏 information hiding 为什么要信息隐藏,大多数理由都因为一个事实, 有效解除系统原创 2018-02-05 10:56:36 · 229 阅读 · 0 评论 -
使可变性最小化
不可变类存在有许多理由:不可变类比可变类更加易于设计,实现和使用,不容易出错,且更加安全 不可变类规则 不要提供任何会修改对象状态的方法 保证类不会被扩展 是所有的域都是final的 使所有的域都称为私有的 确保对于任何可变组件的互斥访问 不可变类真正唯一缺点是对于每个不同的值,都需要一个单独的对象,创建这种对象的代价可能很高原创 2018-02-06 14:58:18 · 251 阅读 · 0 评论