我们的许多设计思想中很多地方都体现了解耦合的思想,这是[b]应对易于变化[/b]的一种很好的解决手段,而在这些手段中最重要的解决方法就是[b]添加中间层[/b],所谓添加中间层 比如我们常见的面向接口编程,其实就是添加了一个中间的层次,屏蔽掉了一些变化,还有就是我们常用的设计模式,什么代理啊,faceda等等,都是采用了这样的一种思想。
但是在设计过程中我们要不要对全部的东西都进行解耦呢?
我觉得这需要分情况来看:
如果你需要编写框架之类的应用,那么这个时候进行解耦是有必要的,原因有两个:
1、技术方面的:框架需要进行不断的更新,可能在很多时候原来设计的一些接口或者类就需要进行名称的改变,虽然这样不好,接口按道理来说是一般不应该发生变化了,但是谁一开始也不可能把接口设计的那么完美,改变一下也是可以原谅的。
2、推广方面的:现在的框架非常多,竞争也非常激烈,当然要迎合程序员和老板的口味了,毕竟人们都喜欢比较灵活的东西,呵呵
我认为Spring就是一个非常聪明的框架,他不去要求程序员必须去做什么,而是提供多种选择,将实现方式的选择权交给程序员去做决定,其实这也就无形中把别人对其的议论给化解了,不会被人说成是强迫别人如何做的霸道框架,这一点是做的非常聪明的,再加上对现有其他流行框架的整合,所以能够披荆斩棘,迅速红遍大江南北!
而说回来,框架为我们提供的这些方式能起到多大的作用呢?
能够为我们以后的修改带来多大的便利(如果我们使用别的框架了)?
我没有看到太多的便利之处,如果抛弃了这些框架,我们还是需要对许多的部分进行更改,工作量的减少程度并不明显。
现在ROR的流行也证明了这一点,有时候在框架方面太灵活也不见得太好,CoC有时候就不错。
所以说在设计的时候把握一个度是很难的事情,很多时候我们都陷入了过度设计的怪圈,时间花的不少,成效不大:(
很多地方说的不一定正确,请大家批评~~
但是在设计过程中我们要不要对全部的东西都进行解耦呢?
我觉得这需要分情况来看:
如果你需要编写框架之类的应用,那么这个时候进行解耦是有必要的,原因有两个:
1、技术方面的:框架需要进行不断的更新,可能在很多时候原来设计的一些接口或者类就需要进行名称的改变,虽然这样不好,接口按道理来说是一般不应该发生变化了,但是谁一开始也不可能把接口设计的那么完美,改变一下也是可以原谅的。
2、推广方面的:现在的框架非常多,竞争也非常激烈,当然要迎合程序员和老板的口味了,毕竟人们都喜欢比较灵活的东西,呵呵
我认为Spring就是一个非常聪明的框架,他不去要求程序员必须去做什么,而是提供多种选择,将实现方式的选择权交给程序员去做决定,其实这也就无形中把别人对其的议论给化解了,不会被人说成是强迫别人如何做的霸道框架,这一点是做的非常聪明的,再加上对现有其他流行框架的整合,所以能够披荆斩棘,迅速红遍大江南北!
而说回来,框架为我们提供的这些方式能起到多大的作用呢?
能够为我们以后的修改带来多大的便利(如果我们使用别的框架了)?
我没有看到太多的便利之处,如果抛弃了这些框架,我们还是需要对许多的部分进行更改,工作量的减少程度并不明显。
现在ROR的流行也证明了这一点,有时候在框架方面太灵活也不见得太好,CoC有时候就不错。
所以说在设计的时候把握一个度是很难的事情,很多时候我们都陷入了过度设计的怪圈,时间花的不少,成效不大:(
很多地方说的不一定正确,请大家批评~~