首页 > 代码库 > 代码整洁之道 --第八章 《边界》
代码整洁之道 --第八章 《边界》
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)是隐藏的。他能随来自应用程序其他部分的极小的影响而变动。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。