感觉松耦合会损失系统的性能,损失系统的可读性(增加了复杂性),但是也能增加系统的灵活性,扩展性。这是不是一种取舍?我说得对么?
松耦合是代码设计阶段事情,性能是运行阶段,两者没有必然的矛盾,取决于设计水平,正因为这样,我们使用框架来保证设计水平,通过配置替代一般的编码工作。这样既保证松耦合,又保证一定的性能。
模块化及降低每个模块之间的耦合度本身就是软件设计的最基本要求,使用接口(INTERFACE)就可以完成,接口的作用就是用来连接不同的模块的。
你的计算机显示器和主机是靠什么连接的啊?答案就是接口(INTERFACE),有了接口后你就可以任意更换显示器了。
真不明白SPRING或某些东西为什么会在“松耦合”上面拼命地吹??只是一些最基本的东西呀??
最基本的东西都没有做好,有潜力可挖,不同时期松耦合的要求程度不一样,以前觉得加一个接口就是松耦合,但是事实是接口只能用来声明对象,对象还是需要创建,靠一个工厂模式虽然解决了屏蔽具体对象,还是引入了工厂第三者,赶走了虎豹,引来了豺狼,松耦合不彻底。
由于Ioc/DI的引入,才使松耦合目前看比较不错,但是也许以后还有更好的松耦合,思想方法不断进步,会找到更好的解决方案。
另外,松耦合并不是说就要避免生成对象,难道IOC就不生成对象了吗?同样要生成,只是由容器去生成及管理罢了,这种松耦合的解决方式和使用接口的传统方式不同之处只在于多了一个XML配置文件而已,而这个配置文件最大的意义是给容器自动生成对象用的,而为什么要让容器去自动生成和管理对象,我想设计者的真正目的是在于节省句柄资源之用,除此之外,我实在是想不出这样做有什么好处,而其代价却是使系统的结构复杂了,用户的使用也复杂了.
其实要实现松耦合也并不一定要使用接口,定义一个中间类来衔接也可以,而中间类的话可以通过组合的形式包含进其它类里,而接口的话就必需得被继承才可以,这是用语言去实现的一种要求.
使用容器管理对象时候,有两种区分:一是不关心松耦合;二是照顾松耦合。
以前容器设计都是不关心代码是否松耦合,甚至要求代码类之间必须是紧耦合的;而Ioc容器实现了Ioc模式,Ioc容器会进行代码类之间调用关系的注射,这样,代码设计时,类之间调用关系只依赖接口就行。
也就是说:Ioc容器和普通容器区别是:Ioc容器会解决代码设计时一些耦合关系;而这时以前普通容器没有注重的。
松耦合应该是程序设计的事情,一般和运行阶段没有关系,Ioc/DI特点就是将设计阶段的事情放在运行阶段实现了。
ä¸çæç½ï¼å¶æè§iocåªæ¯æå¯¹è±¡é´çè¦åå ³ç³»è½¬ç§»å°xmlä¸å»äºï¼è®¾è®¡ä¸æ²¡å©ä»ä¹äºåï¼è¿å以åå°ä¸äºæåçè¦åå ³ç³»æ¾å ¥é ç½®æä»¶ææ°æ®åºä¸çåæ³å¥½è±¡æ²¡ä»ä¹æ¬è´¨çåºå«åï¼å¯è½å¯ä¸ç好夿¯å°è¿ç§åæ³æ åååèªå¨æå¡äºï¼ä¸è¿ä¹æ»æ¿äºãè¯è¯·banqè叿ç¹è¿·æ´¥ãç ç©¶äºå天icoè¶æ¥è¶è¿·ç³äºï¼æ»æè§æäºä¸è¥¿è¿æ²¡æçéã
"松耦合真是条任重道远的路"更加验证老子下面这句话:
为学日益,为道日损
只有经过漫长学习实战锻炼道路,才能真正明白“松耦合”这个日益简单的道理