春天教程 - 春天松散耦合

2018-01-09 19:06 更新

春天教程 - 春天松散耦合


例子...

項目代碼

我們將創(chuàng)建一個有幾個類的項目。項目將以不同的格式輸出數(shù)據(jù)。我們可以選擇以CSV格式或JSON格式輸出數(shù)據(jù)。

我們將創(chuàng)建一個有幾個類的項目。項目將以不同的格式輸出數(shù)據(jù)。我們可以選擇以CSV格式或JSON格式輸出數(shù)據(jù)。...

package com.java2s.output;
public interface Printer
{
  public void print();
}

之后,我們將創(chuàng)建CSV打印機(jī),將輸出CSV格式的數(shù)據(jù)。CSV打印機(jī)實現(xiàn)打印機(jī)接口。

package com.java2s.output.impl;
import com.java2s.output.Printer;
public class CSVPrinter implements Printer
{
  public void print(){
    System.out.println("Csv Output Printer");
  }
}

然后是時間創(chuàng)建JSON打印機(jī)將輸出JSON格式的消息。JSON打印機(jī)還實現(xiàn)了打印機(jī)接口。

package com.java2s.output.impl;
import com.java2s.output.Printer;
public class JSONPrinter implements Printer
{
  public void print(){
    System.out.println("Json Output Printer");
  }
}


夫婦代碼

我們有幾種方法來使用CSVPrinter或JSONPrinter。 首先我們可以直接調(diào)用它。

package com.hgci.cnmon;
import com.java2s.output.Printer;
import com.java2s.output.impl.CSVPrinter;
public class App 
{
    public static void main( String[] args )
    {
      Printer output = new CSVPrinter();
      output.print();
    }
}

這樣很容易創(chuàng)建CSVPrinter。 但是如果我們想要改變源代碼的話切換到JSONPrinter,我們將不得不更改源代碼并重新編譯。

對于上面的代碼,它很容易改變,因為它有兩行代碼。 假設(shè)我們有成千上萬代碼和CSVPrinter已被聲明了幾百次。



春天

通過使用Spring依賴注入(DI),我們可以在Spring配置XML文件中聲明Java Bean。 然后在xml文件中連接Java Bean。這樣Spring可以使我們的打印機(jī)松散耦合到不同的打印機(jī)實現(xiàn)。

我們更改Helper類以接受打印機(jī)。

package com.java2s.output;
import com.java2s.output.Printer;
public class OutputHelper
{
  Printer outputGenerator;
  public void print(){
    outputGenerator.print();
  }
  public void setOutputGenerator(Printer outputGenerator){
    this.outputGenerator = outputGenerator;
  }
}

然后我們要創(chuàng)建一個Spring bean配置文件并在此處聲明所有Java對象依賴關(guān)系。

<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.java2s.output.OutputHelper">
    <property name="outputGenerator" ref="csvPrinter" />
  </bean>
  <bean id="csvPrinter" class="com.java2s.output.impl.CSVPrinter" />
  <bean id="jsonPrinter" class="com.java2s.output.impl.JSONPrinter" />
</beans>

通過Spring調(diào)用它

package com.hgci.cnmon;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.java2s.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.print();
    }
}

要切換打印機(jī),我們只需要為不同的打印機(jī)更改Spring XML文件。當(dāng)Printer更改時,我們需要修改Spring XML文件。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號