模式的解藕

有模式的解藕,必然在其它地方有藕合,只不过把这条链子加长了,

以前只要两个类便可以实现的东西现在要三个或都更多?这样做有多少必要?

能拖则拖,拖到哪里算哪里,这种思路在实际生活中很管用,从社会到个人之间债务等都是这样啊。

你的意思是说有new 就会出现实现类,这样就限制了多态性,所以把new 尽量向后移,对吗?

关于decoupling的一个比较形象的比喻是“犯罪链”(或者说地下组织)

地下组织为了尽量的保全自己,防止外部世界发现、破坏组织的机体,往往会采用各种各样的方法来隐蔽自身。其中的单线联系就是这样的一个有效方法。

所谓单线联系就是:A <---> B <---> C <---> ... <---> Core. 如果这个链条中的某一个节点出了问题,他影响的只是和他相邻的两个节点,只需要对这相邻的两个节点做一些小小的处理就行了(比如,杀掉或躲藏相邻的节点),对于其他的节点不会有太多的影响。如果A、B、C、...之间是相互知道了解的话,很可能这个组织会被一锅端掉了!呵呵

同样的道理,decoupling的好处就在于class之间尽量少的be aware of其他class的存在,这样如果这个class需要更改,那么只需要对它所aware of的class作出调整即可。如果系统的decoupling做的不好的话,很可能这个系统最终会变得unwieldy。

对于能拖就拖的观点本人持保留意见

把解耦理解为能拖就拖,觉得有些误导。

我的理解是,通过解耦,可以使对象更明确的对自己负责,降低对其他对象的责任。其实就是一个责任分配的问题。

个人认为模式就是通用的类角色设计的方法,用模式的思想来创建一些功能明确单一并且可相互协助的类来实现程序。