1. 服务提供
软件设计的基本原则是高内聚:每个组建的内部作用明确,功能紧密相关。然而经常有人将太多功能塞进一个对象中。
例如:在支票打印模块中,你需要设计一个可以同时读取文本格式又能正确识别不同打印机型号的对象。你需要设计一个可以同时读取文本格式又能正确识别不同打印机型号的对象。一个对象检查所有排版布局的目录(即:对象A);
一个或一组可以识别不同打印机型号的对象展示通用的打印界面 (即:对象B);
第三个对象组合上述两个服务来完成任务 (即:对象C,C中包含A与B两个对象)。
这样,每个对象都提供了一组紧密的服务。在良好的面向对象设计中,每个对象功能单一且高效。这样的程序设计可以提高我们代码的复用性,同时也方便别人阅读和理解我们的代码。只有让人知道你提供什么服务,别人才能更好地将其应用到其他模块或程序中。
2. 封装
Java 有三个显式关键字来设置类中的访问权限:public(公开),private(私有)和protected(受保护)。这些访问修饰符决定了谁能使用它们修饰的方法、变量或类。
public(公开): 表示任何人都可以访问和使用该元素;
private(私有): 除了类本身和类内部的方法,外界无法直接访问该元素。private 是类和调用者之间的屏障。任何试图访问私有成员的行为都会报编译时错误;
protected(受保护):类似于 private,区别是子类(下一节就会引入继承的概念)可以访问 protected 的成员,但不能访问 private 成员;
default(默认):如果你不使用前面的三者,默认就是 default 访问权限。default 被称为包访问,因为该权限下的资源可以被同一包(库组件)中其他类的成员访问。