摘要:
不可变类只是其实例不能被修改的类。每个实例所包含的信息必须在创建该实例的时候就提供,并在对象的整个生命周期内固定不变。 JDK中已经包含了许多不可变的类,其中有String,基本类型包装类,BigInteger,和BigDecimal。 存在不可变的类的类有许多理由:不可变的类比可变类更加易于设计,实现和使用。它们不容易出错,且更加安全。 为了使类成为不可变的,需要遵循下面五条规则: 1.不要提供... 阅读全文
posted @ 2015-04-27 17:17
wangliyue
阅读(184)
评论(0)
推荐(0)
摘要:
对于一些退化类(没有什么作用,只是用来集中实例域,也可认为是Java Bean)。 如果这样的类是公有类,也就是我们希望客户端代码可以访问这些退化类的实例域,不应该直接使用public来暴漏这些数据域, 而是应该私有域和公有设值方法(setter)来代替。这样做的好处是,如果我们一旦需要改变这个退化类的内部结构,客户端 代码所受的影响最小。否则,如何客户端代码直接使用公有的数据域,这样的代码遍布各... 阅读全文
posted @ 2015-04-27 13:42
wangliyue
阅读(188)
评论(0)
推荐(0)
摘要:
要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节。 设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰的隔离开来。然后,模块之间只通过它们的API进行通信,一个模块不需要 知道其他模块的内部工作情况。这被称为信息隐藏或者封装。 由于我们实现了很好的封装,只提供若干的API供客户端代码来访问,非API涉及的类和成员,... 阅读全文
posted @ 2015-04-27 10:52
wangliyue
阅读(453)
评论(0)
推荐(0)