《Effective Java 中文版》章节试读

当前位置:首页 > 网络编程 > 编程语言与程序设计 > Effective Java 中文版章节试读

出版社:机械工业出版社
出版日期:2003-1
ISBN:9787111113850
作者:(美)Joshua Bloch
页数:225页

《Effective Java 中文版》的笔记-第1页

Effective Java是我看的第二本学习相关的书,第一本是Thinking in Java。但是发现编程经验太少,有些条目中的场景不能很好的理解,因为没有遇到过,所以反过头来又看了编程思想,才发现编程思想不是一本专属初学者的,甚至可以说不适合初学者。往往学习过一些Java基础的再反过头去看一看编程思想,才能更加深入的理解思想两个字。现在编程思想又大概的过了一遍了,要继续开始看Effective Java,一个月时间,Nix,fighting!!!

《Effective Java 中文版》的笔记-第4章.类和接口 - 第4章.类和接口

12.使类和成员的可访问能量最小化
设计API为最小的可访问性
13.支持非可变性
14.复合优先于继承
15.要么专门为继承而设计,并给出文档说明,要么禁止继承
16.接口优于抽象类
17.接口只是被用于定义类型
18.优先考虑静态成员类
第5章c语言结构的替代
其他省略
21.用类代替enum结构
第6章.方法
23.检查参数的有效性
24.需要时提供保护性拷贝.
117页

《Effective Java 中文版》的笔记-第三章对所有对象通用的方法 - 第三章对所有对象通用的方法

7.改写equalse方法的时候请遵守约定
需要改写的情况 一个类有自己的“逻辑相等”,并且超类也没有改写equalse
8.改写equals总是要改写hasecode
9.总是要改写tostring
10.谨慎的改写clone
11.考虑实现Comparable接口

《Effective Java 中文版》的笔记-第1页 - 设计非可变类

设计非可变类(对象)
1.只有一个状态:初始构造时的状态,简单
2.所有的操作都是返回一个新构造的对象或者结果,而不去修改类的状态
函数式编程
3.不需要同步
4.可以方便共享同一对象
5.问题:可能会导致大量的对象创建开销
解决方法一:为这种类对象同时提供一个可变的配套的类,在必要的时候使用可变类
解决方法二:将开销较大的计算结果缓存在可变成员中的方式来解决,后续计算可以直接使用之前的缓存结果
6.除非有很好的理由让一个类成为可变类,否则就应该成为非可变类
7.对于某些类,成为不可变的类是不切实际的,比如Thread类,只能尽量保持其不可变性
比如Java中的TimerTask,它的状态空间被有意的设计的非常小。
构造函数应该构造完全初始化的对象,让约束关系尽早建立起来
继承实际上会依赖于基类的实现细节,而不是依赖与其公开API承诺,破坏了封装性,这种关系是比较脆弱的
而组合则依赖与类的公开承诺,不会破坏其封装性
因此,要么专门为继承而设计,并给出文档说明对于可被重写的类的相关实现细节的承诺(好的文档本应该说明这个类做了什么,而非如何做到,这里
由于封装性被破坏,所以违背了这条原则),实际上这种承诺和API一样,是永久的承诺,要么禁止继承

《Effective Java 中文版》的笔记-第1页 - Java抽象类与接口

1.抽象类不利于增加新的接口(需要调整类的层次),抽象类不利于用来定义混合类型,接口允许多重继承
2.每个接口本质上都是定义了一种新的类型
3.二者可以结合,对每个接口都提供一个抽象的骨架实现类,负责所有与接口实现相关的工作。对于实现多个接口的类,可以将操作派发给不同的抽象骨架实现类。

《Effective Java 中文版》的笔记-第二章创建和销毁对象 - 第二章创建和销毁对象

1.静态工厂方法代替构造器
好处. 1.静态工厂方法有名字。
2.不必在每次调用他们的时候都创建一个新的对象
3.可以返回一个元返回类型的子类对象
4.创建参数化类型的时候,他们是代码变得更加简洁
缺点1.如不含有公有的或受保护的构造器.不能被子类化
2.他们和其他静态方法没有区别。
2.遇到多个构造器参数的时候要考虑用构建器
如果类的构造器或静态构造工厂有多个参数,设计这种模式时,builder模式时不错的选择.
3.使用私有构造器或枚举类型强化singleton属性
实现singleton两种方法,都需要私有构造函数,和静态成员。
1.公有静态成员是final
public static final Elvis INSTANCE=new Elvis();
private static Elvis getInstance(){

}
2.公有静态工厂方法
private static final Elvis INSTANCE=new Elvis();
public static Elvis getInstance(){
return INSTANCE;
}
3.编写单个元素枚举类型
4.通过私有构造器强化不可实例化的能力
用于util类,只包含静态方法和静态域,这个类没有必要实例化。对于API可以不实例化这个类。
5.避免创建不必要的对象
当心无意识的自动装箱
6消除过期的对象引用。
无意识的内存泄露
7。避免使用终结函数


 Effective Java 中文版下载 更多精彩书评


 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024