发表于: 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>



返回列表 返回列表
评论

    分享到