說明:在實際的開發(fā)項目中,一般都比較龐大,如果處理不當(dāng),會導(dǎo)致對象的依賴關(guān)系將一直緊密聯(lián)系在一起,并且難以修改或者管理。在這一種場景下,sPRing框架的優(yōu)勢便體現(xiàn)出來了—–松耦合。
例子1
說明:運用傳統(tǒng)方法輸出helloworld語句,主要代碼如下
OutputGenerator.java
public interface OutputGenerator { public void output();}OutputGeneratorImpl.java 實現(xiàn)OutputGenerator接口
import com.main.model.OutputGenerator;public class OutputGeneratorImpl implements OutputGenerator{ public void output() { System.out.println("hello world"); }}測試方法
@Test public void testOutputGenerator(){ OutputGeneratorImpl output = new OutputGeneratorImpl(); output.output(); }輸出結(jié)果為 helloworld 缺點:用這種傳統(tǒng)的方式可以實現(xiàn)output方法輸出helloworld語句,但是OutputGenerator與OutputGeneratorImpl緊密地聯(lián)系在一起,假如OutputGenerator類需求有變化,則需要改動代碼的地方就會非常多
例子2
依然運用例子1中的OutputGenerator類和OutputGeneratorImpl類,并且再增加一個輔助類,用于輸出
OutputGeneratorService
import com.main.impl.OutputGeneratorImpl;import com.main.model.OutputGenerator;public class OutputGeneratorService { OutputGenerator outputGenerator; //default constructor public OutputGeneratorService(){ outputGenerator = new OutputGeneratorImpl(); } public void output(){ outputGenerator.output(); }}測試方法
@Test public void testOutputGeneratorService(){ OutputGeneratorService service = new OutputGeneratorService(); service.output(); }運行結(jié)果依然為:hello world 改進(jìn):增加一個輔助類來管理類的依賴關(guān)系,使得代碼的耦合程度不再那么緊密 存在問題:輸出的變化依然涉及一部分代碼的更改
例子3:運用spring的依賴注入(DI)
修改例子2的OutputGeneratorService
import com.main.impl.OutputGeneratorImpl;import com.main.model.OutputGenerator;public class OutputGeneratorService { OutputGenerator outputGenerator; //default constructor public OutputGeneratorService(){ } public void setOutputGenerator(OutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } public void output(){ outputGenerator.output(); }}增加一個spring bean的配置文件,并且生命java 對象的依賴關(guān)系
<!-- beans.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="OutputGeneratorService" class="com.main.service.OutputGeneratorService"> <property name="outputGenerator" ref="OutputGeneratorImpl"/> </bean> <bean id="OutputGeneratorImpl" class="com.main.impl.OutputGeneratorImpl"></bean></beans>測試方法
@Test public void testSpringOutput(){ applicationContext context = new ClassPathXmlApplicationContext(new String[] {"beans.xml"}); OutputGeneratorService service =(OutputGeneratorService)context.getBean("OutputGeneratorService"); service.output(); }輸出結(jié)果依然為hello world 改進(jìn)之處:現(xiàn)在只需要修改spring的配置文件即可實現(xiàn)不同的輸出,而不需要修改代碼
新聞熱點
疑難解答