对于OOP(包括后续的AOP、SOP)来说,唯一的原则就是高内聚,低耦合。面向对象的核心思想就是要把你的程序看做一个一个的对象,这些对象有着明确而合理的分工,从而产生高效的协作。其实如果你对你的对象有感情,就会发现他们都是很有生命力的东西,有着很强烈的生活和感情诉求,如果你不满足他,他就会给你看脸色。
其实,这是西方一个比较显著的特点—契约。所以我们看到,在西方的政府、机构、公司,对各岗位的分工都比较清晰,当要执行一项综合性的任务,就通过组合的方式实现。比如美国的国家安全委员会,大概就是从外交部、联邦调查局、联邦财政局以及军方抽调不同的角色组成。但是我们也知道,美国并不是一个守约定的国家。美国历届总统的选举承诺,几乎没有能够实现的;美国答应与中国建立G2,共管太平洋,也不了了之;美国人一向推崇的民主和自由,在全球各地作为颜色革命的幌子,滥杀无辜。所以我们能看到,模式其实是有一定的适用场景。就像中国特色的社会主义,到了朝鲜或古巴,可能就不一定那么靠谱了。
但是又会有人接着问,何谓高内聚、低耦合?这个也非常好理解,比如2012年4月18日,菲律宾海岸警卫队的埃德萨号执法船挂白旗前往黄岩岛接替与中国对峙的巴拉望号 ,这就是一个高内聚、低耦合的反例,因为你要挂白旗显示期望通过和平谈判解决问题的意愿,却不能通过降下国旗换上白旗的方式,而只能通过换一搜本身带白旗的船过来的方式,这样的一个系统,是典型的低内聚、高耦合。类似的一个例子是2004年俄罗斯赠送给印度的戈尔什科夫航母 ,本来只需要支付给俄罗斯不到10亿的翻新费用,但到目前为止,总花费已近29亿,并且仍没有完工迹象。如果排除俄罗斯人奸诈的考量,我们只能说,这也是一个比较垃圾的高耦合系统,重构的代价甚至超过了从头再来。
其实俺私下里认为,设计的精髓就是分类学,就是在一个当前已知的空间(场景)里,你对其中的事物做怎样的分类,才能保证当这个空间萎缩或膨胀的时候,这些个事物不至于灭绝,然后再经过漫长的进化重生。而是可以通过快速的裁剪、更新与组合来完成适应新空间的过程。所以分类学是一门非常高的学问,如果你能对事物准确的分类,就证明你掌握了事物的本质,人亦如此。不信请看:
混沌未分天地乱,茫茫渺渺无人见。
自从盘古破鸿蒙,开辟从兹清浊辨。
覆载群生仰至仁,发明万物皆成善。
欲知造化会元功,须看《西游释厄传》。