读写方法增强 Java 代码的健壮性
封装和信息隐藏是导致健壮类和组件设计的基本原则。Java 开发人员用来增强封装性和支持信息隐藏的一种重要技术就是恰当地使用读写方法。
读 写方法 -- 直接操纵字段值的成员函数 -- 分成两类:setter 和 getter。setter 是修改字段的值,而 getter 是获取其值。虽然读写方法对代码增加了少量的开销,但与其它因素(譬如,有问题的数据库设计)相比,这点性能上的损失是微不足道的。读写方法可以帮助隐藏 类实现的细节,因而增强了代码的健壮性。通过最多两个控制点(从这两个控制点来访问字段),一个 setter 和一个 getter,使您能够通过将需要更改的点数降低到最少来增强类的可维护性。
图 1 描述了 Person 类 homeAddress 字段的 getter 和 setter 成员函数的实现。getter 和 setter 是很有用的,因为它们使您能够封装可应用于数据字段的重要商业规则、转换逻辑和验证逻辑。例如, 图 2 呈现了 setter 成员函数的一种替代实现。请查看 setter 成员函数如何通过首先调用 validate() 成员函数来验证已传递的地址类的有效性。如果它是有效的,那么该函数设置 homeAddress 字段的值。如果地址无效,该函数抛出一个异常。
图 1. Person 类 homeAddress 字段的 getter 和 setter
/** |
图 2. setHomeAddress() 成员函数的替代实现
/** |
您的组织可以推行的最重要的标准之一是使用读写方法。一些开发人员不想使用读写方法成员函数,因为他们不想额外敲键盘输入几个必须的字符(例如,对于 getter,您需要在字段名称前面和后面输入 get和 ()。是否使用读写方法的底线是这样的:对于因使用读写方法而增加的可维护性和可扩展性的考虑一定要重于其使用的恰当性。
getter 成员函数应以 get+ 字段名称来命名,除非该字段表示一个布尔值(真或假),并且 getter 以 is+ 字段名称命名。setter 成员函数应以 set+ 字段名称来命名,不考虑该字段的类型。正如 表 1中 所见,字段名称总是使用将每个字的首字母大写,而其它字母小写的混合写法。在 Java Development Kit (JDK) 中一直使用这种命名约定,而且这种约定在 JavaBean 开发以及在 Enterprise JavaBean (EJB) 2.0 中用于持久字段中也是必须的。
字段 | 类型 | getter 名称 | setter 名称 |
name | string | getName | setName |
homeAddress | Adressobject | getHomeAddress | setHomeAddress |
persistent | boolean | isPersistent | setPersistent |
zipCode | int | getZipCode | setZipCode |
instructors | Vector of Professorobjects | getInstructors | setInstructors |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130092/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/374079/viewspace-130092/