Java Spring Loose Coupling
Konsep berorientasi objek adalah desain yang baik untuk memecah sistem menjadi sekelompok objek yang dapat digunakan kembali. Namun, ketika sistem menjadi lebih besar, terutama dalam proyek Java, dependensi objek besar akan selalu ditambah dengan ketat untuk membuat objek sulit dikelola atau dimodifikasi. Dalam hal ini, semua dependensi objek dapat dengan mudah dan efisien dikelola menggunakan kerangka kerja pegas sebagai modul inti.
Contoh generator output
Mari kita lihat contoh, misalkan proyek Anda memiliki output fungsi dalam format CSV atau JSON. Kode Anda mungkin terlihat seperti contoh berikut:
File: IOutPutGenerator.Java Paket Antarmuka Generator Output Com.yiibai.output; Antarmuka Publik IOUTPutGenerator {public void generateOutput ();} File: csvoutputGenerator.java generator output CSV digunakan untuk mengimplementasikan interface iOutputenerator. Paket com.yiibai.output.impl; import com.yiibai.output.ioutputGenerator; kelas publik csvoutputGenerator mengimplementasikan iOutputGenerator {public void generateOutput () {System.out.println ("CSV Output Generators"); }} File: JSONOutPutGenerator.java generator output JSON digunakan untuk mengimplementasikan antarmuka iOutputGenerator. Paket com.yiibai.output.impl; import com.yiibai.output.ioutputGenerator; kelas publik jsonoutputGenerator mengimplementasikan iOutputGenerator {public void generateOutput () {System.out.println ("JSON Output Generator"); }} Ada beberapa cara untuk menelepon IOutputGenerator, dan cara menggunakan Spring untuk menghindari objek yang saling terkait erat.
1. Metode 1 dipanggil secara langsung
Cara normal adalah menyebutnya secara langsung.
Paket com.yiibai.common; import com.yiibai.output.ioutputGenerator; import com.yiibai.output.impl.csvoutputGenGenerator;/ * http://www.manongjc.com/article/1602.html */aplikasi kelas publik {public static static static static static public static public static public static public static public static public static public static public static void public static void CsvoutputGenerator (); output.genateToutput (); }}Ada masalah
Dengan cara ini, masalahnya adalah bahwa "output" secara ketat digabungkan ke CSVOutputGenerator, dan setiap perubahan yang dihasilkan oleh output dapat melibatkan perubahan kode. Jika kode ini tersebar di seluruh proyek Anda, setiap perubahan yang dihasilkan oleh output akan menyebabkan Anda menderita.
Metode 2 Sebut saja dengan kelas pembantu
Mungkin Anda ingin membuat kelas pembantu untuk mengimplementasikan semua output di dalam kelas.
Paket com.yiibai.output; import com.yiibai.output.ioutputGenerator; import com.yiibai.output.impl.csvoutputGenerator; Outputhelper kelas publik {iOutputGenerator outputGenerator; Outputhelper publik () {outputGenerator = csvoutputGenerator baru (); } public void generateOutput () {outputGenerator.GenateToutput (); }} Sebut saja melalui kelas pembantu
paket com.yiibai.common; import com.yiibai.output.outputhelper; aplikasi kelas publik {public static void main (string [] args) {outputhelper output = outputhelper baru (); output.genateToutput (); }}Ada masalah
Ini terlihat lebih elegan dari sebelumnya, hanya mengelola kelas penolong, tetapi kelas penolong masih erat digabungkan ke CSVOutputGenerator, dan setiap perubahan yang dihasilkan oleh output masih melibatkan perubahan kode kecil.
Metode 3 Musim Semi
Dalam hal ini, injeksi ketergantungan musim semi (DI) adalah pilihan yang baik. Spring memungkinkan pembuatan output secara longgar digabungkan ke generator output.
Kelas Outputhelper memiliki modifikasi yang lebih kecil.
Paket com.yiibai.output; import com.yiibai.output.ioutputGenerator; kelas publik outputhelper {iOutputGenerator outputGenerator; public void generateOutput () {outputGenerator.genateToutput (); } public void setOutPutGenerator (iOutputGenerator outputGenerator) {this.outputGenerator = outputGenerator; }} Buat file konfigurasi kacang pegas dan nyatakan semua dependensi objek Java di sini.
<!-Spring-Common.xml-> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalo kation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-weans-2.5.xsd"> <bean id = "outputhelper"> <name properti = "outputgenerator" ref = "csvoutputgenerator" /> </ bean> <bean id = "csvoutputgenerator" /> <bean id = "jsonoutputgenerator" /< /bean> "
Sebut saja melalui musim semi
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 (string baru [] {"spring-common.xml"}); Outputhelper output = (outputhelper) context.getBean ("outputhelper"); output.genateToutput (); }} Sekarang, cukup ubah file XML Spring menggunakan generator output yang berbeda. Hanya memodifikasi file XML Spring tanpa modifikasi tanpa sensor berarti lebih sedikit kesalahan.
Kesimpulan: Dengan Kerangka Musim Semi - Injeksi Ketergantungan ini (DI) ini berguna untuk manajemen ketergantungan objek, membuatnya lebih elegan, sangat fleksibel dan mudah dipelihara dalam manajemen pengembangan proyek Java besar.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!