《Effective Java》第13条:使类和成员的可访问性最小化

封装:

封装的概念:

封装,又名信息隐藏,设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰的隔离开来;然后模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况.

为什么需要封装

  1. 封装可以有效的解除组成系统的各个模块之间的耦合关系, 使得这些模块可以独立开发,测试,优化,使用,理解和修改.
  2. 因为模块间的耦合程度低,这样程序员就可以并行开发,从而加快项目进展
  3. 可以更好的维护与优化,程序员可以集中精力理解某一模块后进行维护,在优化时,可以确认哪一模块影响了性能,并确定哪些模块可以被优化.

访问控制级别

  • private:只有在声明该成员的顶层类内部才可以访问这个成员
  • package-private(default):声明该成员的包内部的任何类都可以访问这个成员
  • protected:声明该成员的类的子类可以访问这个成员,以及声明该成员的包内部所有类都可以访问这个成员
  • public:所有对象都可以访问这个类

设计原则

  • 尽可能地使每个类护着成员不被外界访问
  • 实例域(field)决不能是公有的,因为一个非final的域(field)一旦设置为公有的,那么就放弃了对存储在这个field中的值进行限制的能力;也意味着放弃了强制这个类不可变的能力.同时当这个field被改变是,也失去了对它采取任何行动的能力.
  • 同样静态域也不应该设为公有,除了当定义常量的时候

猜你喜欢

转载自blog.csdn.net/qq_34332035/article/details/88970417