我们总是用第三方的API提供的能力,第三方要求广度,而我们满足需要和封装又希望能力是单一的,所以要处理好边界哦!
1 public class Sensors{ 2 private Map sensors =new HashMap(); 3 4 public Sensor getById(String id){ 5 return (Sensor) sensors.get(id); 6 } 7 }
以上代码,比直接用Map要好很多哦,因为它限制了Map的其他能力暴露出去,从而恰当的处理了代码边界;如此的例子还可以类比webMagic的ResultItem;但不确定作者就是为了整洁代码哈哈
谁和谁的边界?
我们总说spring具有轻的入侵性;比较明显的就是其实我们写代码就很希望一切都在我们的组织之中,我们对我们的代码所知甚多,而对外面的代码所知甚少,还害怕别人的代码会改变升级从而影响我们的系统;所以在选择框架和工具的时候,如果我们需要的功能入侵性很强,肯定都会选择比较稳定的,比喻netty;指定好版本,不要随意变更,即使jdk8升级jdk9也会有可能让系统无法运行,这些比较稳定的框架从某个角度讲我们对它了如指掌其实就是我们自己的代码了,在我们的内部边界。但如果使用第三方不稳定的代码的时候,就注意了,一定要隔离开来,比喻finereport;我们对外的边界利用以上方法隔离,提取我们需要的能力;