zoukankan      html  css  js  c++  java
  • 代码整洁之道 --第八章 《边界》

    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)是隐藏的。他能随来自应用程序其他部分的极小的影响而变动。

  • 相关阅读:
    66. Plus One
    Binder
    Activity启动模式笔记整理
    ANR和FC
    java之yield(),sleep(),wait()区别详解-备忘笔记
    Http方法:Get请求与Post请求的区别
    BroadcastReceiver的用法笔记
    java笔记
    Leetcode -- Day 17 & Day 18 & Day 19
    Leetcode -- Day 14&Day15&Day16&Day17
  • 原文地址:https://www.cnblogs.com/YcYYcY/p/3847330.html
Copyright © 2011-2022 走看看