代码整洁之道 --第八章 《边界》

Sensor类对象的Map的映射代码如下:

Map sensors = new HashMap ();

当代码的其他部分访问这些sensors,就会出现以下代码:

Sensors s = (Sensors) sensors.get(sensorId);

这行代码一再出现。代码的调用端承担了从Map中取得对象并将其转换为正确类型的责任。行是行,却并非整洁的代码。而且,这行代码并未说明自己的用途。

通过对泛型的使用,这段代码可读性大大提高,如下示例:

Map<Sensors> sensors = new HashMap<Sensors>();

String s = sensors.get(sensorId);

不过,Map<Sensors> 提供了超出所需的功能的问题,尚未得到解决。

在系统中不受限制地传递Map<Sensors> 的实体,意味着当到Map的接口被修改时,有许多地方都要跟着修改。

使用Map的更简洁的方式大致如下。Sensors不必关心是否用了泛型,那将是实现细节才关心的。

public class Sensors{
  private Map sensors = new HashMap();
  public  Sensor getById(String id){
     return (Sensor) sensors .get(id);
  } 
}

边界上的接口(Map)是隐藏的。他能随来自应用程序其他部分的极小的影响而变动。

 

 

转载于:https://www.cnblogs.com/YcYYcY/p/3847330.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值