第三方API
在开发中,我们经常要使用第三方API提供的能力,第三方要求广度(普适性),而我们往往只用来满足一些特定的需求(集中性)。
假设以 Map 举例为第三方API,Map有着广阔的接口和丰富的功能:
这种灵活性很有用,但也要付出代价。比如,应用程序可能构造一个Map对象并传递它。
假设有一个需求,不能 清除map 也就是不能调用 clear。但是如果直接传递 Map, 任何接收者都有权限调用 clear。
private static void todo1(Map<String, PartBean> map) {
map.clear();
}
解决:指定边界
class PartMap {
Map<String, PartBean> map = new HashMap();
public PartBean getById(String id) {
return map.get(id);
}
public void setMap(Map<String, PartBean> map) {
this.map = map;
}
}
PartMap 限制了 Map 接口能力,使它处于可控状态,另外好处是当 Map 接口变更时,修改起来比较方便。