天天看点

Effective Java:类与接口

  1. 使类和成员的可访问性最小
方便解耦合,使得这些模块可以独立开发、测试、优化、使用、理解、修改,加快了开发速度,减轻了维护负担。提高了软件的可重用性
  1. 在公有类中使用访问方法而非公有域
即不使用public修饰属性,而是使用private和setter、getter来访问属性
  1. 使可变性最小

为了使类不可变,需要遵循:

1.不要提供任何会修改对象的方法

2.保证类不会被扩展

3.所有域都是final

4.所有域都是private

5.确保对于任何可变组件的互斥访问(如果类具有指向可变对象的域,不要暴漏该对象的引用,也不要使用客户端提供的引用直接初始化该域。可以使用保护性拷贝技术)

  1. 复合优先于继承
  2. 要么为继承而设计,要么禁止继承
  3. 接口优先于抽象类
Java只允许单继承,所以抽象类受到限制。
  1. 接口只用于定义类型
常量接口是对接口的不良使用。可使用常量类代替常量接口,并私有构造方法。
  1. 类层次优先于标签类
  2. 用函数对象表示策略
  3. 优先考虑静态成员类
如果声明成员类不要求访问外围实例,那么就要使用static来声明它。如,Map实例,Entry对象的getKey、getValue、setValue并不需要访问Map,所以使用私有静态成员类是最佳的选择。如果不使用static也可以,但是每个entry都会指向map的引用,这样就浪费了内存空间。