Java Spring Leasy Coupling
Объектно-ориентированная концепция является хорошим дизайном для разбивания системы на группу многократных объектов. Однако, когда система становится больше, особенно в проектах Java, огромные объектные зависимости всегда будут тесно связаны, чтобы затруднить управление или изменение объектов. В этом случае все зависимости объектов могут быть легко и эффективно управляться с использованием структуры Spring в качестве модуля Core.
Пример выходного генератора
Давайте посмотрим на пример, предположим, что ваш проект имеет функцию вывода в формате CSV или JSON. Ваш код может выглядеть как следующий пример:
Файл: iOutputGenerator.java выходной генератор пакет интерфейса com.yiibai.output; public interface iOutputGenerator {public void GenerateOutput ();} Файл: CSVOutputGenerator.java Выходной генератор CSV используется для реализации интерфейса iOutputGenerator. пакет com.yiibai.output.impl; import com.yibai.output.ioutputgenerator; открытый класс csvoutputgenerator реализует iOutputGenerator {public void GenerateOutput () {System.out.println ("CSV выходной генератор"); }} Файл: jsonOutputGenerator.java Выходной генератор JSON используется для реализации интерфейса iOutputGenerator. пакет com.yibai.output.impl; import com.yiibai.output.ioutputgenerator; открытый класс jsonoutputgenerator реализует iOutputGenerator {public void GenerateOutput () {System.out.println ("json выходной генератор"); }} Есть несколько способов назвать iOutputGenerator и как использовать пружину, чтобы избежать тесно связанных объектов друг с другом.
1. Метод 1 называется напрямую
Нормальным способом является назвать это напрямую.
пакет com.yiibai.common; импорт com.yiibai.output.ioutputgenerator; import com.yiibai.output.impl.csvoutputgenerator;/ * http://www.manongjc.com/article/1602.html */public app {public vide void (] args). CsvoutputGenerator (); output.GenerateOutput (); }}Есть проблемы
Таким образом, проблема заключается в том, что «выход» тесно связан с CSVOutputGenerator, и каждое изменение, генерируемое выходом, может включать изменения кода. Если этот код разбросан по всему вашему проекту, каждое изменение, сгенерированное выводом, заставит вас страдать.
Метод 2 вызовите это с помощью помощника
Может быть, вы хотите создать помощник класса для реализации всех выводов внутри класса.
пакет com.yiibai.output; импорт com.yibai.output.ioutputgenerator; import com.yiibai.output.impl.csvoutputGenerator; открытый класс outputhelper {iOutputGenerator outputGenerator; public outputhelper () {outputGenerator = new csvoutputGenerator (); } public void GenerateOutput () {outputGenerator.GenerateOutput (); }} Позвоните через помощник
пакет com.yiibai.common; import com.yiibai.output.outputhelper; public class app {public static void main (string [] args) {outputhelper output = new Outputhelper (); output.GenerateOutput (); }}Есть проблемы
Это выглядит более элегантно, чем раньше, просто управление помощником класса, но помощник класса по -прежнему тесно связан с CSVOutputGenerator, и каждое изменение, генерируемое результатом, все еще включает в себя небольшие изменения кода.
Метод 3 пружины
В этом случае инъекция весенней зависимости (DI) является хорошим выбором. Spring позволяет выработке быть свободно связанным с выходным генератором.
Класс Outputhelper имеет меньшие модификации.
пакет com.yiibai.output; import com.yibai.output.ioutputgenerator; открытый класс outputhelper {iOutputGenerator outputGenerator; public void GenerateOutput () {outputGenerator.GenerateOutput (); } 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"> <name = "upturalGenator" ref = "csvoutputGenerator" /> < /bean> <bean id = "csvoutputgenerator" /> <bean id = "jsonoutputGenerator" /> < /beans>
Назовите это до весны
Пакет com.yiibai.common; import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationContext; импорт com.yiibai.output.outputhelper; public class applicteclextemptext; New Classpletectectextextemptecte. String [] {"spring-common.xml"}); Outputhelper output = (outputhelper) context.getbean ("outputhelper"); output.GenerateOutput (); }} Теперь просто измените файл Spring XML, используя другой генератор вывода. Только изменение Spring XML -файлов без модификаций без цензуры означает меньше ошибок.
Вывод: с помощью Spring Framework - эта инъекция зависимости (DI) полезна для управления объектами, что делает его более элегантным, очень гибким и простым в обслуживании в управлении разработкой крупных проектов Java.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!