!. 依赖要使用的功能,而不是具有该功能的类
方式一
类A需要一个闹钟功能 钟表类B具有闹钟功能
引用了钟表类B 手机类C 具有闹钟功能
洗衣机类D具有闹钟功能
这是一种强耦合关系,如果不想使用钟表类,想换成手机类C就麻烦了
方式二
类A需要一个闹钟功能 具有闹钟功能的接口INAOZHONG
引用了接口INAOZHONG 钟表类B实现了INAOZHONG
手机类C实现了INAOZHONG
洗衣机类D实现了INAOZHONG
这是一种弱耦合关系,只依赖功能接口,任何实现该接口,具有该功能的类都可以使用
怎么使用就是下面要说的,依赖数据,而不是依赖程序类
!. 依赖数据、而不是程序类
配置文件
===========================================================================
方式一
类A需要一个闹钟功能
引用了接口INAOZHONG
new 钟表类B()
还是强耦合关系,修改提供闹钟功能的对象时,需要改代码。
方式二
类A需要一个闹钟功能
引用了接口INAOZHONG
Factory.getBean(INAOZHONG.class.getName());//这里只是用全路径名称作为接口Bean的id了。
bean.xml
<bean id="org.test.INAOZHONG" >
<impl ref="org.test.ZHONGBIAOImpl" />
</bean>
<bean id="org.test.ZHONGBIAOImpl" class="org.test.ZHONGBIAOImpl"/>
<bean id="org.test.SHOUJIImpl" class="org.test.SHOUJIImpl"/>
<bean id="org.test.XIYIJIImpl" class="org.test.XIYIJIImpl"/>
Factory类
getBean();//通过beanId获取bean对象;这里主要去拿接口INAOZHONG的bean对象,返回的是一个实现类对象。
还是弱耦合关系,修改提供闹钟功能的对象时,需要改XML数据。
监听器
===========================================================================
还有一种依赖数据就是监听器
学生类A 分数类B
学生数据A 分数数据B
分数类B读取学生数据A,经过计算,得出分数数据B
学生数据A删除一行,该学生的分数数据需要级联删除,怎么实现呢?
方式一
学生类A中直接删除分数数据B
分数类B依赖于学生数据A
类A依赖于分数数据B
这是双向依赖关系
方式二
学生类A中只删除学生的数据
数据类建立监听器,对感兴趣的监听器处理器发广播
分数类B建立监听处理器对象,放到监听器的池子中
分数类B依赖于学生数据A
学生类A只依赖自己的数据
级联删除通过监听器的方式建立关联,而这种关联是数据的依赖,而不是程序类的依赖
这是单向依赖关系,另一个方向的依赖是数据,很弱
学习了 http://blog.csdn.net/iamkila/article/details/7257303 的文章
相关推荐
"sandh解耦方式把值显示在页面"这个标题描述了一个具体的应用场景,即在Java Web开发中,通过解耦技术实现数据在后端与前端之间的高效传递,使得页面能够正确显示数据。 在这个过程中,首先涉及到的是两个表的关联...
为应对这一问题,本文提出了一种基于双LCC结构系统的电动汽车负载短路动态解耦方式。 研究者通过对LCC补偿结构进行数学建模,深入分析了负载短路时的暂态响应过程,找出了短路引发冲击电流的根本原因。基于这些分析...
文章的内容主要围绕着业务解耦的必然性和重要性、解耦的方向(横向和纵向)、解耦的方式以及在证券交易系统中的具体应用实践展开,提出了一系列关于如何实现核心交易系统高效解耦的技术手段。 ### 标签解析 - **...
事件总线的解耦方式,代码完全解耦,引入即可使用 这里提醒一下,这东西由于是赶时间做出来的,所以不要直接拿来用,这很耗性能,以及坑,因为这里暴力的集成了youzan的组件库,但本项目的这种开发模式可以借鉴,...
6. **闭包(Closures)**:在Swift中,闭包可以作为参数传递,提供了一种灵活的解耦方式,尤其适用于处理异步操作。 7. **服务定位器(Service Locator)**:虽然在某些情况下争议较大,但适当使用可以帮助管理模块...
大型火电单元机组被控对像是强耦合,一般的解耦方式是不适合单元机组的模型变化,所以要用具有自适应的解耦方式,这个神经网络就是这种解耦方式, 这个程序是用神经网络进行解耦的。用的是BP网络
同时,这种解耦方式使得我们的代码更加模块化,更易于维护和扩展。 在提供的压缩包文件"MVC_GaoJi"中,可能包含了实现上述功能的实例代码,包括模型类、控制器和自定义验证过滤器的实现。你可以查阅这些文件,了解...
通过IoC和AOP,Spring提供了一种高效、灵活的方式来管理和组织应用程序的组件,使得复杂系统的构建变得更为简洁和可控。理解并掌握Spring的解耦思想,对于任何Java开发者来说,都是提升技能、优化代码质量的重要步骤...
在复杂的电机控制系统中,如何有效地管理和优化电机性能是至关重要的,这就引入了矢量控制和解耦算法的概念。 矢量控制是一种模仿直流电机控制策略的方法,它通过将交流电机的定子电流分解为磁场电流(d轴电流)和...
- 当上游系统需要获取下游系统的执行结果时,应采用RPC(Remote Procedure Call,远程过程调用)方式。例如,登录页面调用passport服务后,需要根据返回的结果决定展示成功或失败页面。在这种情况下,使用MQ则会...
其次,**使用props传递元素**是另一种解耦方式。当组件接收大量状态或配置时,除了传递数据,还可以传递整个元素。在`Comment`组件和`CommentTemplate`组件的例子中,`Comment`组件根据其自身的状态决定要在`...
利用函数指针实现C的回调函数,实现调用者和底层驱动的解耦 第二种方式利用函数指针实现C的回调函数,实现调用者和底层驱动的解耦 第二种方式利用函数指针实现C的回调函数,实现调用者和底层驱动的解耦 第二种方式
### 前端代码解耦的关键点 在现代软件开发中,“高内聚,低耦合”的原则被视为提高代码质量的重要指南。对于前端开发者而言,理解并实施代码解耦不仅有助于提升个人技能,还能显著增强项目的可维护性和可扩展性。...
"同步解耦"和"异步化"是两个重要的概念,它们对于提高系统性能和扩展性至关重要。在这个主题中,我们将深入探讨SpringBoot如何实现这两个概念。 首先,让我们理解同步和异步的概念。在编程中,同步操作意味着调用一...
用户可以根据自己的需求修改代码,将其转换为非解耦牛拉法,即恢复到原始的雅可比矩阵处理方式。 总的来说,解耦牛拉法是一种高效的电力系统潮流计算方法,其核心在于将复杂的非线性方程组通过解耦简化,从而降低...
在分布式系统中,消息队列是一种常用的解耦方式,可以将消息的发送和接收方解耦,提高系统的可扩展性和可靠性。因此,在面试中,面试官可能会问到RabbitMQ的基本原理、工作流程和应用场景等问题。其次,对于Java...
论文题目:CD^2^-pFed:联邦学习中模型个性化的循环蒸馏引导通道解耦具体内容:一、背景二、相关工作不同的参数解耦方式CD^2^-pFed 框架三、关键技术1.模型个性化的通道解耦2.循环蒸馏3.个性化权重的时间平均移动四...
**解耦控制**是指通过某种方式将多输入多输出(MIMO)系统分解为多个单输入单输出(SISO)子系统,使得每个子系统的控制可以独立进行,以提高系统性能和稳定性。在FNN中,解耦可以通过设计合适的模糊规则和网络结构...
Spring的核心思想是Ioc(控制反转)和AOP(面向切面编程),通过这些概念提供了一种优秀的解耦方式,降低业务对象替换的复杂性,提高组件的可重用性。 在Spring框架中,Bean的创建和依赖注入是核心功能之一。在Ioc...