面向对象设计中最重要了有两个方面,一是类的识别,一个类的职责分配。其实这两者之间其实有内在联系。比如当你认为有必要新建一个类时,你一定是已经有了某个职责要分配给它;当你发现某个职责谁做都不合理时,就会考虑是不是要新建一个类。今天主要聊下职责分配的问题。
职责分配最重要的一条就是专家原则,就是谁具备完成这项职责的条件,拥有相关的资源;比如吃饭这个事,只有嘴巴最适合做;因为它有个入口,还拥有牙齿这样的利器,并且具备把食物送到胃里面去的通道。具体设计中也是一样,谁最适合做就让它做。当然这可能碰到这样的情况,发现有某个类是个“多面手”,很多事情它都能做,这时候根据专家原则,你就会发现它的职责会越来越多。这时候你觉得是不是专家原则有问题?不是,问题的根源是 设计中不允许有这样的"多面手"类,你必须把它的资源分给其它类(也许需要New新类)。
专家原则其实是个很有趣的现象,其实我们每天都会碰到。项目经理最爱找谁?特别是紧急的事情,他会找一个他认为最能解决他问题的那个人。所以你经常发现项目组的核心程序员、项目组长非常忙,而一般成员就相对清闲些。这就是专家原则在起作用。以此推测,当你新加入一个陌生团队时,你就很容易找到谁是核心成员。如果你是项目组长,你也许必须让你的手下成为至少一个方面的专家,否则根据专家原则,你就不可能解脱。
要学会做专家,要学会培养专家,更重要的是识别专家。
----------------------------------------------------------------------
张瑜,Mybeautiful, zhangyu0182@sina.com.