发表于: 2017-12-03 23:38:31
1 611
1.耦合关系是?
两个事物存在相互作用,相互影响的关系,在开发中则是不同的模块、不同类之间存在相互影响、相互作用的关系。
2.为什么松耦合?
面向对象编程中,当一个JAVA项目变得庞大时,对象之间的依赖相互影响的关系会导致系统中的对象难以管理和修改,而Spring作为核心模块实现松耦合,高效管理对象依赖。
3.Spring实现松耦合实例
举个例子,一个函数输出水果的名称,共有两个水果,苹果和香蕉。
3.1目录结构
3.2OutputInter.java 接口文件
package pers.onezero.output; public interface OutputInter { public void generateOutput(); }
3.3AppleOutputGenerate.java 输出Apple信息实现OutputInter接口
package pers.onezero.output.impl;
import pers.onezero.output.OutputInter;
public class AppleOutputGenerate implements OutputInter {
public void generateOutput() {
// TODO Auto-generated method stub
System.out.println("This is an Apple!");
}
}
3.4BananaOutputGenerate.java 输出Banana信息实现OutputInter接口
package pers.onezero.output.impl;
import pers.onezero.output.OutputInter;
public class BananaOutputGenerate implements OutputInter{
public void generateOutput(){
System.out.println("This is a banana!");
}
}
3.5OutputHelper.java 接口辅助类
package pers.onezero.output;
import pers.onezero.output.OutputInter;
public class OutputHelper {
OutputInter outputGenerator;
public void setOutputGenerator(OutputInter outputGenerator){
this.outputGenerator = outputGenerator;
}
public void generateOutput(){
outputGenerator.generateOutput();
}
}
3.6Songouhe.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<bean id="OutputHelper" class="pers.onezero.output.OutputHelper">
<property name="outputGenerator" ref="BananaOutput" />
</bean>
<bean id="AppleOutput" class="pers.onezero.output.impl.AppleOutputGenerate"/>
<bean id="BananaOutput" class="pers.onezero.output.impl.BananaOutputGenerate"/>
</beans>
3.7Test.java 主函数,实现信息输出
package pers.onezero.songoh;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import pers.onezero.output.OutputHelper;
public class Test {
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"Songouhe.xml"});
OutputHelper output = (OutputHelper)context.getBean("OutputHelper");
output.generateOutput();
}
}
3.8控制台输出结果
如果想要选择不同的输出方式,只需要修改Songouhe.xml配置文件中如下部分的ref属性
<bean id="OutputHelper" class="pers.onezero.output.OutputHelper"> <property name="outputGenerator" ref="BananaOutput" /> </bean>
评论