从0到1学JAVA第十二天——Spring实现松耦合实例

JAVA 一零 1年前 (2017-12-03) 184次浏览 0个评论

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>

 


爱码星 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:从 0 到 1 学 JAVA 第十二天——Spring 实现松耦合实例
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到