您的位置:首页 > 编程语言 > Java开发

spring作用

2008-09-27 21:58 183 查看
 
有一个应用,要求能够很好地接受u盘或者移动硬盘(假如两种介质的读写算法不一样)的接入,你如果是开发人员,应该怎么样开发这个应用?
•注意:程序里面只有两个功能:ReadInfo(),WriteInfo()
•方案1:在应用里面将所有可能的介质算法都开发一遍。但此方法不好,每次都要修改代码<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

•方案2:用spring管理

如下:

===================================================

定义U盘类

package usbdisk;

 

import app.IDISK;

 

public class UsbDisk  implements IDISK{

    public String readInfo(){

       return "从U盘读过来的信息";

    }

    public void writeInfo(String msg){

       System.out.println("向U盘写出信息:" + msg);

    }

}

=====================================================

定义移动盘类:

package movedisk;

 

import app.IDISK;

 

public class MoveDisk implements IDISK{

    public String readInfo(){

       return "从移动硬盘读过来的信息";

    }

    public void writeInfo(String msg){

       System.out.println("向移动硬盘写出信息:" + msg);

    }

}

=====================================================

定义一个接口管理U盘和移动盘

package app;

 

public interface IDISK {

    public abstract String readInfo();

    public abstract void writeInfo(String msg);

}

 

========================================================

编写配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

 

<beans>

    <!-- 对象的生成,由框架通过反射机制完成,控制权从前端主程序转化到了框架,

    这种思想叫做控制反转(IOC),Inverse Of Control,可以很好的实现模块切换-->

    <bean id="disk" class="usbdisk.UsbDisk"></bean>

   

</beans>

 

====================================================

 

 

测试

 

package app;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

 

 

public class MainModule {

 

       public static void main(String[] args) {

              //读取配置文件

              ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");

              IDISK disk =(IDISK)context.getBean("disk");//根据配置文件的内容,实例化对象并且返回

              disk.writeInfo("你们好");

       }

 

}

可以看到此disk是指usbdisk.UsbDisk,指的是U盘,如果要改为移动盘呢,只要在配制文件中改<bean id="disk" class="usbdisk.UsbDisk"></bean> class的值就可以了。

 

 

 

 

 

 

调用方(应用)和模块(u盘或者移动硬盘)之间用配置文件联系起来

 

 

当u盘或者移动硬盘接入时,改变配置文件,调用方始终在读配置文件,并没有改变源代码.

 

 

配置文件改变,可以进行模块切换,甚至改变模块行为

 

 

测试代码仅仅面向接口编程,而无需知道实现类的具体名称。同时,我们可以很简单的通过修改配置文件来切换具体的底层实现类。

 

 

•Spring作用1:这种思想可以很好地实现同类不同质的模块切换:例如要用不同的方法将内容写入到不同的介质

 

 

 

组件依赖关系减少,上面的例子中,我们通过Spring,在运行期动态将字符串注入到实现类的属性中。这种概念将参数传递交给容器去做,叫做依赖注入.

 

 

 

 

•Spring作用2:可以方便地通过配置文件改变模块行为,动态注入属性值

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息