第三方API

在开发中,我们经常要使用第三方API提供的能力,第三方要求广度(普适性),而我们往往只用来满足一些特定的需求(集中性)。

假设以 Map 举例为第三方API,Map有着广阔的接口和丰富的功能:
image.png

这种灵活性很有用,但也要付出代价。比如,应用程序可能构造一个Map对象并传递它。

假设有一个需求,不能 清除map 也就是不能调用 clear。但是如果直接传递 Map, 任何接收者都有权限调用 clear。

  1. private static void todo1(Map<String, PartBean> map) {
  2. map.clear();
  3. }

解决:指定边界

  1. class PartMap {
  2. Map<String, PartBean> map = new HashMap();
  3. public PartBean getById(String id) {
  4. return map.get(id);
  5. }
  6. public void setMap(Map<String, PartBean> map) {
  7. this.map = map;
  8. }
  9. }

image.png
PartMap 限制了 Map 接口能力,使它处于可控状态,另外好处是当 Map 接口变更时,修改起来比较方便。