Javaスプリングルーズカップリング
オブジェクト指向の概念は、システムを再利用可能なオブジェクトのグループに分割するための優れたデザインです。ただし、特にJavaプロジェクトでシステムが大きくなると、オブジェクトの管理や変更が困難になるために、巨大なオブジェクトの依存関係が常に緊密に結合されます。この場合、すべてのオブジェクト依存関係は、コアモジュールとしてSpringフレームワークを使用して、簡単かつ効率的に管理できます。
出力ジェネレーターの例
例を見てみましょう。プロジェクトにCSVまたはJSON形式の関数出力があるとします。あなたのコードは次の例のように見えるかもしれません:
ファイル:ioutputgenerator.java出力ジェネレーターインターフェイスパッケージパッケージcom.yiibai.output; public interface ioutputgenerator {public void generateoutput();}ファイル:csvoutputgenerator.javaパッケージcom.yiibai.output.impl;インポートcom.yiibai.output.ioutputgenerator; public class csvoutputgeneratorはioutputgenerator {public void generateoutput(){system.out.println( "csv outputジェネレーター"); }} file:jsonoutputgenerator.java json出力ジェネレーターは、ioutputgeneratorインターフェイスを実装するために使用されます。パッケージcom.yiibai.output.impl;インポートcom.yiibai.output.ioutputgenerator; public class jsonoutputgeneratorはioutputgenerator {public void generateoutput(){system.out.out.println( "json outputジェネレーター"); }} ioutputgeneratorを呼び出す方法はいくつかあり、スプリングを使用してオブジェクトが互いに密接にリンクされていることを避ける方法があります。
1。メソッド1は直接呼び出されます
通常の方法は、それを直接呼び出すことです。
パッケージcom.yiibai.common; import com.yiibai.output.ioutputgenerator; Import com.yiibai.output.impl.csvoutputgenerator;/ * http://www.manongc.com/article/1602.html */公開クラス= Public void inags [I stistic void aguts []新しいcsvoutputgenerator(); output.genereTput(); }}
問題があります
このようにして、問題は「出力」がCSVOutputGeneratorに密接に結合され、出力によって生成されるすべての変更にはコードの変更が含まれる可能性があることです。このコードがプロジェクト全体に散らばっている場合、出力によって生成されるすべての変更により、苦しみます。
方法2ヘルパークラスでそれを呼び出します
たぶん、クラス内のすべての出力を実装するためのヘルパークラスを作成したいと思うかもしれません。
パッケージ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.genereTput(); }}ヘルパークラスを通してそれを呼び出します
パッケージcom.yiibai.common; import com.yiibai.output.outputhelper; public class app {public static void main(string [] args){outputhelper output = new outputhelper(); output.genereTput(); }}問題があります
これは、ヘルパークラスを管理するだけで、以前よりもエレガントに見えますが、ヘルパークラスは依然としてCSVOutputGeneratorに密接に結合されており、出力によって生成されるすべての変更には小さなコードの変更が含まれます。
方法3スプリング
この場合、スプリング依存噴射(DI)が良い選択です。スプリングにより、出力生成を出力ジェネレーターにゆるく結合できます。
アウトパスタークラスには、変更が小さくなります。
パッケージcom.yiibai.output; import com.yiibai.output.ioutputgenerator; public class outputhelper {ioutputgenerator outputgenerator; public void generateoutput(){outputgenerator.genereTput(); } public void setOutputGenerator(ioutputGenerator outputGenerator){this.outputGenerator = outputGenerator; }} Spring Bean構成ファイルを作成し、ここですべてのJavaオブジェクトの依存関係を宣言します。
<! - spring-common.xml-> <豆xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:schemalo cation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id = "outputhelper"> <プロパティ名= "outputgenerator" ref = "csvoutputgenerator" /> < /bean> <bean id = "csvoutputgenerator" /> <bean id = "jsonoutputgenerator" /> < /beans>
春まで電話してください
パッケージcom.yiibai.common; Import org.springframework.context.applicationcontext; Import org.springframework.context.support.classpathxmlapplicationcontext; Import com.yiibai.output.outputhelper; public context = public void boid(bed new args(] new boid(new new args) classPathXMLApplicationContext(new String [] {"Spring-Common.xml"}); outputhelper output =(outputhelper)context.getBean( "Outputhelper"); output.genereTput(); }}次に、別の出力ジェネレーターを使用してSpring XMLファイルを変更するだけです。無修正変更なしでスプリングXMLファイルを変更するだけで、エラーが少なくなります。
結論:スプリングフレームワークを使用 - この依存関係注入(DI)は、オブジェクト依存関係の管理に役立ち、大規模なJavaプロジェクトの開発管理において、よりエレガントで柔軟性があり、維持が容易になります。
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!