[转载]读写方法增强 Java 代码的健壮性

读写方法增强 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
/**
* Answers the person's home address
*
* @return homeAddress
*/
public Address getHomeAddress()
{
return homeAddress;
}
/**
* Sets the person's home address
*
* @param homeAddress
*/
public void setHomeAddress(Address homeAddress)
{
this.homeAddress = homeAddress;
}


图 2. setHomeAddress() 成员函数的替代实现
/**
* Sets the person's home address
*
* @param homeAddress
* @return homeAddress
*/
public Address setHomeAddress(Address homeAddress) throws InvalidDataException
{
// Only set the address if it is valid
if (homeAddress.validate() ) {
this.homeAddress = homeAddress;
}

else {
throw new InvalidDataException();
}
}

您的组织可以推行的最重要的标准之一是使用读写方法。一些开发人员不想使用读写方法成员函数,因为他们不想额外敲键盘输入几个必须的字符(例如,对于 getter,您需要在字段名称前面和后面输入 get和 ()。是否使用读写方法的底线是这样的:对于因使用读写方法而增加的可维护性和可扩展性的考虑一定要重于其使用的恰当性。

getter 成员函数应以 get+ 字段名称来命名,除非该字段表示一个布尔值(真或假),并且 getter 以 is+ 字段名称命名。setter 成员函数应以 set+ 字段名称来命名,不考虑该字段的类型。正如 表 1中 所见,字段名称总是使用将每个字的首字母大写,而其它字母小写的混合写法。在 Java Development Kit (JDK) 中一直使用这种命名约定,而且这种约定在 JavaBean 开发以及在 Enterprise JavaBean (EJB) 2.0 中用于持久字段中也是必须的。

表 1.读写方法命名示例

字段 类型 getter 名称 setter 名称
namestringgetNamesetName
homeAddress Adressobject getHomeAddresssetHomeAddress
persistentbooleanisPersistentsetPersistent
zipCodeintgetZipCodesetZipCode
instructorsVector of Professorobjects getInstructorssetInstructors

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130092/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-130092/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值