面向对象-封装
封装就是要构建一个内聚的单元,减少这个单元对外的暴露,减少内部实现细节暴露,减少对外暴露接口。
反例:经常草率的给方法加上public,不经意间将内部实现的部分暴露出去,如下代码
class Service{
public void shutdownTimerTask(){
//停止定时器任务
}
public void shutdownPollTask(){
//停止轮询服务
}
}
改进:
private void shutdownTimerTask(){
}
private void shutdownPollTask(){
}
public void shutdown(){
this.shutdownTimerTask();
this.shutdownPollTask();
}
这个原则也适用于系统设计,很多团队非常随意的在系统里添加接口,当你想改造系统去掉一些接口时,很可能会造成线上故障,因为你根本不知道那个团队在什么时候用到了它。
统一的原则:最小化接口暴露,即每增加一个接口都要找到一个合适的理由。