我也不知道为什么很多人写的代码号称是oo,其实是用class 这个关键字来掩饰结构化编程的习惯。我个人觉得这个简直就是侮辱OO这项技术。在设计OO的时候,找出各种domain class或者说business class应该说比较容易,像什么名词法等等都是成型技术了。而OO最难的也是最有意思的就是解决对象间的通讯问题。因为不作设计的结果是对象间不知道怎么通讯,或者说如果要通讯需要暴露一大堆的内部状态。每个控制这类通讯的对象或者类都需要根据不同的情况来处理,写上一堆if else是很正常的事情了。其难维护程度真的是。。。
还有一种是设计过度,最容易导致的结果是一个对象需要和无数个对象通讯,其结果是从这个对象的个体角度看是decouple了,但是从系统的角度看这个对象和那些与之通讯的对象,耦合性很高,尤其是如果是link的通讯,如果那天把中间某个对象修改了,是否可以保持以前的通讯,要重新检查,危险是很高的。
这样基于以上问题,行为模式就发挥作用了,它可以decouple 对象或者类之间的通讯问题,尤其是那些处于不同层次的对象,效果尤其明显,像著名的MVC即observer模式的变种。