会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
wangliyue
Stay hungry,stay foolish.
博客园
首页
新随笔
联系
管理
上一页
1
···
3
4
5
6
7
8
9
10
11
···
13
下一页
2015年4月29日
第十七条:要么为继承而设计,并提供文档说明,要么就禁止继承
摘要: 为继承为设计的类,任何方法中不要调用这个类其他可能被子类覆盖的方法。 构造器中决不能掉用可被覆盖的方法。
阅读全文
posted @ 2015-04-29 09:55 wangliyue
阅读(154)
评论(0)
推荐(0)
2015年4月28日
第十六条:组合优先于继承
摘要: 继承是实现代码重用的有力手段,但是它并非永远是完成这项工作的最佳工具。使用不当会导致软件变得很脆弱。 在包的内部使用继承是非常安全的,在那里,子类和超类的实现都处在同一个程序员的控制之下。 对于专门为了继承而设计,并且具有很好的文档说明的类来说,使用继承也是十分安全的。 然而,对于普通的具体类,进行跨越包边界的继承,则是十分危险的。 组合:不用扩展现有的类,而是在新的类中增加一个私有域,它引用...
阅读全文
posted @ 2015-04-28 17:27 wangliyue
阅读(292)
评论(0)
推荐(0)
2015年4月27日
第十五条:使可变性最小化
摘要: 不可变类只是其实例不能被修改的类。每个实例所包含的信息必须在创建该实例的时候就提供,并在对象的整个生命周期内固定不变。 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)
2015年4月24日
第十二条:考虑实现Comparable接口
摘要: 与前面讨论的方法不同,compareTo()方法并没有在Object类中定义。相反,它是Comparable接口中唯一的方法。 一个类的实例对象要想是可以比较大小的,那么这个类需要实现Comparable接口,必须正确的实现compareTo()方法。 一个类实现了Comparable接口,就表明这个类的实例对象具有内在的排序关系。 一旦类实现了Comparable接口,那么这个类就可以和依赖于该...
阅读全文
posted @ 2015-04-24 17:20 wangliyue
阅读(236)
评论(0)
推荐(0)
第十一条:谨慎的覆盖clone()方法
摘要: 一个类要想实现克隆,需要实现Cloneable接口,表明这个类的对象具有克隆的功能。 Cloneable接口是一个mixin接口,它里面并没有任何的抽象方法,类似的接口有Serializable接口,表明该类的对象可以序列化。 首先应该明确通过一个对象克隆出另一个对象的概念:通过一个对象克隆出另一个对象,简称对象1和对象2,这两个对象就成为两个独立的对象, 那么对对象1做任何的修改,对象2应该不受...
阅读全文
posted @ 2015-04-24 15:44 wangliyue
阅读(736)
评论(0)
推荐(0)
2015年4月23日
第十条:始终要覆盖toString()方法
摘要: Object类提供的toString()方法如下: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 如果我们直接打印一个对象,就会调用这个对象的toString()方法,如果我们没有为该类覆盖toString()方法, 我们可以看出toStri...
阅读全文
posted @ 2015-04-23 17:15 wangliyue
阅读(306)
评论(0)
推荐(0)
第九条:覆盖equals方法时总要覆盖hashCode方法
摘要: Object类的hashCode方法: public native int hashCode(); 是一个本地方法。 其中这个方法的主要注释如下: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must...
阅读全文
posted @ 2015-04-23 15:44 wangliyue
阅读(1648)
评论(0)
推荐(0)
2015年4月22日
第八条:覆盖equals时请遵守通用约定
摘要: ==是物理相等 equals是逻辑相等 因为每个类的实例对象本质上都是唯一的 ,利用物理相等(==)是指一个实例只能相等于它自己。 利用逻辑相等是(equals)指 一个实例是否和另一个实例的某些关键域相等,从而来判断这两实例是否相等。 Object类的equals方法的实现:物理相等的话就逻辑相等。 什么时候不需要覆盖Object类的equals方法? 1.希望这个类的实例只能和自身相等,...
阅读全文
posted @ 2015-04-22 17:16 wangliyue
阅读(551)
评论(0)
推荐(0)
上一页
1
···
3
4
5
6
7
8
9
10
11
···
13
下一页
公告