最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java Spring松耦合高效應(yīng)用簡(jiǎn)單實(shí)例分析

 更新時(shí)間:2016年12月08日 08:51:18   投稿:lqh  
在Java項(xiàng)目,龐大的對(duì)象依賴關(guān)系將一直緊密耦合引起對(duì)象難以管理或修改。在這種情況下,可以使用Spring框架作為一個(gè)核心模塊輕松高效地管理所有的對(duì)象依賴。本文章向大家介紹Spring松耦合的實(shí)例,需要的朋友可以參考一下。

java Spring松耦合

面向?qū)ο蟮母拍?,是一個(gè)很好的設(shè)計(jì)來(lái)打破系統(tǒng)進(jìn)入一個(gè)組可重用的對(duì)象。然而,當(dāng)系統(tǒng)變大,尤其是在Java項(xiàng)目,龐大的對(duì)象依賴關(guān)系將一直緊密耦合引起對(duì)象難以管理或修改。在這種情況下,可以使用Spring框架作為一個(gè)核心模塊輕松高效地管理所有的對(duì)象依賴。

輸出生成器的例子

讓我們來(lái)看一個(gè)例子,假設(shè)你的項(xiàng)目有一個(gè)函數(shù)輸出的內(nèi)容,以CSV或JSON格式。您的代碼可能看起來(lái)像下面的例子:

File : IOutputGenerator.java – 輸出生成器接口

package com.yiibai.output;

public interface IOutputGenerator
{
 public void generateOutput();
}
File : CsvOutputGenerator.java – 一個(gè)CSV輸出生成器用來(lái)實(shí)現(xiàn)IOutputGenerator接口。

package com.yiibai.output.impl;

import com.yiibai.output.IOutputGenerator;

public class CsvOutputGenerator implements IOutputGenerator
{
 public void generateOutput(){
 System.out.println("Csv Output Generator");
 }
}
File : JsonOutputGenerator.java – 一個(gè)JSON輸出生成器用來(lái)實(shí)現(xiàn)IOutputGenerator接口。

package com.yiibai.output.impl;

import com.yiibai.output.IOutputGenerator;

public class JsonOutputGenerator implements IOutputGenerator
{
 public void generateOutput(){
 System.out.println("Json Output Generator");
 }
}

有幾個(gè)方法來(lái)調(diào)用IOutputGenerator,以及如何使用 Spring 來(lái)避免對(duì)象相互結(jié)合緊密。

1. 方法1 – 直接調(diào)用

正常的方式,直接調(diào)用它。

package com.yiibai.common;

import com.yiibai.output.IOutputGenerator;
import com.yiibai.output.impl.CsvOutputGenerator;
/* http://www.manongjc.com/article/1602.html */
public class App 
{
  public static void main( String[] args )
  {
   IOutputGenerator output = new CsvOutputGenerator();
   output.generateOutput();
  }
}

存在問題

以這種方式,這個(gè)問題是“output”緊密到CsvOutputGenerator耦合,輸出生成的每一個(gè)變化可能涉及代碼變化。如果此代碼分散在你的項(xiàng)目中,輸出生成的每一次變化都會(huì)讓你受苦。 

方法2 – 用輔助類調(diào)用它

可能想創(chuàng)建一個(gè)輔助類將所有輸出實(shí)現(xiàn)在類的內(nèi)部。

package com.yiibai.output;

import com.yiibai.output.IOutputGenerator;
import com.yiibai.output.impl.CsvOutputGenerator;

public class OutputHelper
{
 IOutputGenerator outputGenerator;
 
 public OutputHelper(){
 outputGenerator = new CsvOutputGenerator();
 }
 
 public void generateOutput(){
 outputGenerator.generateOutput();
 }
 
}

通過輔助類調(diào)用它

package com.yiibai.common;

import com.yiibai.output.OutputHelper;

public class App 
{
  public static void main( String[] args )
  {
   OutputHelper output = new OutputHelper();
   output.generateOutput(); 
  }
}

存在問題

這看起來(lái)比之前的更優(yōu)雅,只需要管理一個(gè)輔助類,但是輔助類仍是緊耦合 CsvOutputGenerator,輸出生成的每一個(gè)變化仍然涉及小的代碼更改。

方法3 – Spring

在這種情況下,Spring 依賴注入(DI)是一個(gè)不錯(cuò)的選擇。Spring 可以讓輸出生成松散的耦合到輸出發(fā)生器。

OutputHelper類更小的修改。

package com.yiibai.output;

import com.yiibai.output.IOutputGenerator;

public class OutputHelper
{
 IOutputGenerator outputGenerator;
 
 public void generateOutput(){
 outputGenerator.generateOutput();
 }
 
 public void setOutputGenerator(IOutputGenerator outputGenerator){
 this.outputGenerator = outputGenerator;
 }
}

創(chuàng)建一個(gè) Spring bean 的配置文件,并在這里聲明所有的Java對(duì)象的依賴。

<!-- Spring-Common.xml -->
<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-2.5.xsd">

 <bean id="OutputHelper" class="com.yiibai.output.OutputHelper">
 <property name="outputGenerator" ref="CsvOutputGenerator" />
 </bean>
 
 <bean id="CsvOutputGenerator" class="com.yiibai.output.impl.CsvOutputGenerator" />
 <bean id="JsonOutputGenerator" class="com.yiibai.output.impl.JsonOutputGenerator" />
 
</beans>

通過Spring來(lái)調(diào)用它

package com.yiibai.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.yiibai.output.OutputHelper;

public class App 
{
  public static void main( String[] args )
  {
   ApplicationContext context = 
    new ClassPathXmlApplicationContext(new String[] {"Spring-Common.xml"});

   OutputHelper output = (OutputHelper)context.getBean("OutputHelper");
   output.generateOutput();
    
  }
}

現(xiàn)在,只需要改變 Spring XML 文件使用不同的輸出生成器。只修改 Spring XML 文件而不需要無(wú)碼修改,這意味著更少的錯(cuò)誤。 

結(jié)論:有了Spring框架 - 這種依賴注入(DI)為對(duì)象的依賴關(guān)系管理有用的特性,使大型Java項(xiàng)目開發(fā)管理中更優(yōu)雅的,高度靈活和便于維護(hù)。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論

杭锦后旗| 德阳市| 肃南| 两当县| 沂源县| 旬阳县| 赞皇县| 霞浦县| 青岛市| 浦北县| 分宜县| 大石桥市| 连山| 吴旗县| 兴国县| 瑞昌市| 绥滨县| 岳池县| 鄂托克前旗| 新邵县| 延津县| 七台河市| 乌鲁木齐市| 庄河市| 都匀市| 天长市| 汝南县| 华池县| 招远市| 洞口县| 正镶白旗| 太白县| 休宁县| 黎平县| 罗甸县| 威宁| 桓台县| 项城市| 商城县| 中方县| 泗水县|