effective-java-四

第13条: 使类和成员的可访问性最小

第14条:在共有类中使用方法而不是公有域

第15条:使可变性最小

使类成为不可变,要遵循下面五条规则
1. 不要提供任何会修改对象状态的方法
2. 保证类不会被扩展
3. 所有的域都是final的
4. 所有的域都是私有的
5. 确保对任何可变组件的互斥访问

第16条:复合优先于继承

第17条:要么为继承而设计,并提供文档说明,要么就禁止继承

构造器绝不能调用可被覆盖的方法

第18条:接口优先于抽象类

1. 现有的类可以很容易被更新
2. 接口是定义mixin(混合类型)的理想选择
3. 接口允许构造非层次结构的类型框架

第19条:接口只用于定义类型

常量接口是不好的使用方法
要导出常量应该使用不可实例化的工具类

第20条:类层次优先于标签类

第21条:用函数对象表示策略

第22条:优先考虑静态成员类

嵌套类

被定义在另一个类的内部类,嵌套类存在的目的应该只是为外部类提供服务。如果嵌套类可能会用于其他环境中,它就应该是顶层类

嵌套类有四种

  1. 静态成员类
  2. 非静态成员类
  3. 匿名类
  4. 局部类
    除了第一种之外,其他三种都被称为内部类