松耦合真是条任重道远的路

松耦合很有意思,越学越带劲啊。只是觉得这条路真的还是蛮长的。

感觉松耦合会损失系统的性能,损失系统的可读性(增加了复杂性),但是也能增加系统的灵活性,扩展性。这是不是一种取舍?我说得对么?


松耦合是代码设计阶段事情,性能是运行阶段,两者没有必然的矛盾,取决于设计水平,正因为这样,我们使用框架来保证设计水平,通过配置替代一般的编码工作。这样既保证松耦合,又保证一定的性能。

同意

松耦合本身就是软件设计的一种最基本的东西,只是不明白在JAVA里为什么会把它看得那么高深??
模块化及降低每个模块之间的耦合度本身就是软件设计的最基本要求,使用接口(INTERFACE)就可以完成,接口的作用就是用来连接不同的模块的。
你的计算机显示器和主机是靠什么连接的啊?答案就是接口(INTERFACE),有了接口后你就可以任意更换显示器了。
真不明白SPRING或某些东西为什么会在“松耦合”上面拼命地吹??只是一些最基本的东西呀??

>松耦合本身就是软件设计的一种最基本的东西,只是不明白在JAVA里为什么会把它看得那么高深

最基本的东西都没有做好,有潜力可挖,不同时期松耦合的要求程度不一样,以前觉得加一个接口就是松耦合,但是事实是接口只能用来声明对象,对象还是需要创建,靠一个工厂模式虽然解决了屏蔽具体对象,还是引入了工厂第三者,赶走了虎豹,引来了豺狼,松耦合不彻底。

由于Ioc/DI的引入,才使松耦合目前看比较不错,但是也许以后还有更好的松耦合,思想方法不断进步,会找到更好的解决方案。

"但是事实是接口只能用来声明对象,对象还是需要创建"------你这样子去理解接口就错了,这种理解绝对是一种很肤浅的理解,接口的真正用途是用来衔接系统的不同部件,起到一种衔接的作用,一般在接口里定义一些共用的属性及方法,这些属性和方法是留给被衔接部件交流信息用的.
另外,松耦合并不是说就要避免生成对象,难道IOC就不生成对象了吗?同样要生成,只是由容器去生成及管理罢了,这种松耦合的解决方式和使用接口的传统方式不同之处只在于多了一个XML配置文件而已,而这个配置文件最大的意义是给容器自动生成对象用的,而为什么要让容器去自动生成和管理对象,我想设计者的真正目的是在于节省句柄资源之用,除此之外,我实在是想不出这样做有什么好处,而其代价却是使系统的结构复杂了,用户的使用也复杂了.
其实要实现松耦合也并不一定要使用接口,定义一个中间类来衔接也可以,而中间类的话可以通过组合的形式包含进其它类里,而接口的话就必需得被继承才可以,这是用语言去实现的一种要求.

前面我没有解释清楚。

使用容器管理对象时候,有两种区分:一是不关心松耦合;二是照顾松耦合。

以前容器设计都是不关心代码是否松耦合,甚至要求代码类之间必须是紧耦合的;而Ioc容器实现了Ioc模式,Ioc容器会进行代码类之间调用关系的注射,这样,代码设计时,类之间调用关系只依赖接口就行。

也就是说:Ioc容器和普通容器区别是:Ioc容器会解决代码设计时一些耦合关系;而这时以前普通容器没有注重的。

松耦合应该是程序设计的事情,一般和运行阶段没有关系,Ioc/DI特点就是将设计阶段的事情放在运行阶段实现了。

"Ioc/DI特点就是将设计阶段的事情放在运行阶段实现了"
不甚明白,偶感觉ioc只是把对象间的耦合关系转移到xml中去了,设计上没剩什么事啊,这和以前将一些易变的耦合关系放入配置文件或数据库中的做法好象没什么本质的区别啊,可能唯一的好处是将这种做法标准化和自动服务了,不过也死板了。肯请banq老师指点迷津。研究了半天ico越来越迷糊了,总感觉有些东西还没有看透。

由于论坛更换期间,前面乱码现象现在已经update,能否请楼上再发表一次?

"松耦合真是条任重道远的路"更加验证老子下面这句话:
为学日益,为道日损

只有经过漫长学习实战锻炼道路,才能真正明白“松耦合”这个日益简单的道理

接口实现松耦合是一种技术手段和工具,设计不好的一样耦合,所以才出现banq提及的框架,一套关系定义良好的接口串联起来就是框架,通用的需求产生通用的框架,实现类依赖某些不成系统的接口没有战略意义,充其量是战术技巧,也谈不上是好的松耦合,只有依赖于框架的实现才可以谈得上好的设计和实现