Java Spring Loose Coupling
แนวคิดเชิงวัตถุเป็นการออกแบบที่ดีในการแบ่งระบบออกเป็นกลุ่มของวัตถุที่นำกลับมาใช้ใหม่ได้ อย่างไรก็ตามเมื่อระบบมีขนาดใหญ่ขึ้นโดยเฉพาะอย่างยิ่งในโครงการ Java การพึ่งพาวัตถุขนาดใหญ่จะถูกรวมเข้าด้วยกันอย่างแน่นหนาเพื่อทำให้วัตถุจัดการหรือแก้ไขได้ยาก ในกรณีนี้การพึ่งพาวัตถุทั้งหมดสามารถจัดการได้อย่างง่ายดายและมีประสิทธิภาพโดยใช้เฟรมเวิร์กสปริงเป็นโมดูลหลัก
ตัวอย่างของเครื่องกำเนิดเอาต์พุต
ลองดูตัวอย่างสมมติว่าโครงการของคุณมีเอาต์พุตฟังก์ชั่นในรูปแบบ CSV หรือ JSON รหัสของคุณอาจดูเหมือนตัวอย่างต่อไปนี้:
ไฟล์: iOutputGenerator.java เอาต์พุตเครื่องกำเนิดไฟฟ้าอินเตอร์เฟส com.yiibai.output; อินเตอร์เฟสสาธารณะ ioutputGenerator {โมฆะสาธารณะ generateOuteput ();} ไฟล์: csvoutputGenerator.java เครื่องกำเนิดเอาต์พุต CSV ใช้เพื่อใช้งานอินเตอร์เฟส ioutputGenerator แพ็คเกจ com.yiibai.output.impl; นำเข้า com.yiibai.output.ioutputGenerator; คลาสสาธารณะ csvoutputGenerator ใช้ ioutputGenerator {โมฆะสาธารณะ generateOutput () {system.out.println ("CSV Output Generator"); }} ไฟล์: jsonOutputGenerator.java เครื่องกำเนิดเอาต์พุต JSON ใช้เพื่อใช้อินเตอร์เฟส iOutputGenerator แพ็คเกจ com.yiibai.output.impl; นำเข้า com.yiibai.output.ioutputGenerator; คลาสสาธารณะ JsonOutputGenerator ใช้ ioutputGenerator {โมฆะสาธารณะ generateOutput () {system.out.println ( - มีหลายวิธีในการเรียก iOutputGenerator และวิธีการใช้สปริงเพื่อหลีกเลี่ยงวัตถุที่เชื่อมโยงกันอย่างใกล้ชิด
1. วิธี 1 เรียกโดยตรง
วิธีปกติคือเรียกมันโดยตรง
แพ็คเกจ com.yiibai.Common; นำเข้า com.yiibai.output.ioutputGenerator; นำเข้า com.yiibai.output.impl.csvoutputGenerator;/ * http://www.manongjc.com/article/1602.html csvoutputGenerator (); output.generateOutput (); -
มีปัญหา
ด้วยวิธีนี้ปัญหาคือ "เอาต์พุต" เชื่อมต่ออย่างแน่นหนากับ CSVOutputGenerator และการเปลี่ยนแปลงทุกครั้งที่สร้างโดยเอาต์พุตอาจเกี่ยวข้องกับการเปลี่ยนแปลงรหัส หากรหัสนี้กระจัดกระจายไปทั่วโครงการของคุณการเปลี่ยนแปลงทุกครั้งที่เกิดจากผลลัพธ์จะทำให้คุณต้องทนทุกข์ทรมาน
วิธีที่ 2 เรียกมันด้วยคลาสผู้ช่วย
บางทีคุณอาจต้องการสร้างคลาส Helper เพื่อใช้เอาต์พุตทั้งหมดภายในชั้นเรียน
แพ็คเกจ com.yiibai.output; นำเข้า com.yiibai.output.ioutputGenerator; นำเข้า com.yiibai.output.impl.csvoutputGenerator; public outputhelper () {outputGenerator = ใหม่ csvoutputGenerator (); } โมฆะสาธารณะ generateOuteput () {outputGenerator.generateOutput (); - เรียกมันผ่านชั้นผู้ช่วย
แพ็คเกจ com.yiibai.Common; นำเข้า com.yiibai.output.outputhelper; แอพระดับสาธารณะ {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {outputhelper output = newputhelper (); output.generateOutput (); -มีปัญหา
สิ่งนี้ดูสง่างามกว่าเดิมเพียงแค่จัดการคลาส Helper แต่คลาสผู้ช่วยยังคงเชื่อมโยงกับ CSVOutputGenerator อย่างแน่นหนาและการเปลี่ยนแปลงทุกครั้งที่สร้างโดยเอาต์พุตยังคงเกี่ยวข้องกับการเปลี่ยนแปลงรหัสเล็ก ๆ
วิธีที่ 3 ฤดูใบไม้ผลิ
ในกรณีนี้การฉีดพึ่งพาสปริง (DI) เป็นตัวเลือกที่ดี สปริงช่วยให้การสร้างเอาต์พุตสามารถเชื่อมโยงกับเครื่องกำเนิดเอาต์พุตได้อย่างหลวม ๆ
คลาส Outputhelper มีการดัดแปลงน้อยลง
แพ็คเกจ com.yiibai.output; นำเข้า com.yiibai.output.ioutputGenerator; Outputhelper คลาสสาธารณะ {ioutputGenerator outputGenerator; โมฆะสาธารณะ generateOuteput () {outputGenerator.generateOutput (); } โมฆะสาธารณะ setOutputGenerator (iOutputGenerator outputGenerator) {this.OutputGenerator = outputGenerator; - สร้างไฟล์การกำหนดค่าถั่วสปริงและประกาศการพึ่งพาวัตถุ Java ทั้งหมดที่นี่
<!-Spring-common.xml-> <ถั่ว xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: Schemalo: Schemalo: Schemalo: Schemalo cation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id = "outputhelper"> <property name = "outputGenerator" ref = "csvoutputGenerator" /> </ebean> <bean id = "csvoutputGenerator" /> <bean id = "jsonoutputGenerator
เรียกมันว่าผ่านฤดูใบไม้ผลิ
แพ็คเกจ com.yiibai.Common; นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.support.classpathxmlapplicationContext; นำเข้า com.yiibai.utput.outputhelper; String [] {"Spring-common.xml"}); outputhelper output = (outputhelper) บริบท. getBean ("outputhelper"); output.generateOutput (); - ตอนนี้เพียงแค่เปลี่ยนไฟล์ Spring XML โดยใช้ตัวสร้างเอาต์พุตที่แตกต่างกัน เฉพาะการแก้ไขไฟล์ Spring XML โดยไม่มีการดัดแปลงที่ไม่ผ่านการตรวจสอบแล้วหมายถึงข้อผิดพลาดที่น้อยลง
สรุป: ด้วยกรอบฤดูใบไม้ผลิ - การฉีดพึ่งพาการพึ่งพา (DI) นี้มีประโยชน์สำหรับการจัดการการพึ่งพาวัตถุทำให้มันสง่างามมีความยืดหยุ่นสูงและง่ายต่อการดูแลในการจัดการการพัฒนาของโครงการ Java ขนาดใหญ่
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!