假定我們現在需要輸出不同格式文件,傳統實現方式如下:
1 創建輸出文件接口IGenerateFile.java
package com.xidian.edu;
public interface IGenerateFile {
public void generateFile();
}
2 創建TxtGenerateFile.java、XmlGenerateFile.java實現IGenerateFile接口
package com.xidian.edu;
public class TxtGenerateFile implements IGenerateFile{
@Override
public void generateFile() {
System.out.println("***Generate Txt File***");
}
}
package com.xidian.edu;
public class XmlGenerateFile implements IGenerateFile{
@Override
public void generateFile() {
System.out.println("***Generate Xml File***");
}
}
public class GenerateFileHelper {
public IGenerateFile generateFile;
public GenerateFileHelper(){
generateFile=new TxtGenerateFile();
}
public void generateFile(){
generateFile.generateFile();
}
}
4 Main 函數調用
package com.xidian.edu;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppMain {
public static void main(String args[]){
/***tranditional implement***/
GenerateFileHelper helper=new GenerateFileHelper();
helper.generateFile();
/***Spring inplement***/
ApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"GenerateFile.xml"});
GenerateFileHelperForSpring iGenerateFile=(GenerateFileHelperForSpring)context.getBean("generateFileHelper");
iGenerateFile.generateFile();
}
}
1 引入GenerateFileHelperForSpring
package com.xidian.edu;
public class GenerateFileHelperForSpring {
IGenerateFile iGenerateFile;
public void generateFile(){
iGenerateFile.generateFile();
}
public void setiGenerateFile(IGenerateFile iGenerateFile) {
this.iGenerateFile = iGenerateFile;
}
}
2 引入GenerateFile.xml,由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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="generateFileHelper" class="com.xidian.edu.GenerateFileHelperForSpring">
<property name="iGenerateFile" ref="xmlGenerateFile"></property>
</bean>
<bean id="txtGenerateFile" class="com.xidian.edu.TxtGenerateFile"></bean>
<bean id="xmlGenerateFile" class="com.xidian.edu.XmlGenerateFile"></bean>
</beans>
這樣處理的好處是隻需要修改xml文件就可以產生不同對象,而不需要改動代碼,耦合性大大降低.
目錄結構如下:
運行結果截圖: