หลักการปิดแบบเปิดเป็นหลักการออกแบบขั้นพื้นฐานที่สุดในโลกชวา มันแนะนำเราถึงวิธีการสร้างระบบที่มั่นคงและยืดหยุ่น
คำนิยาม:
เอนทิตีซอฟต์แวร์เช่นคลาสโมดูลและฟังก์ชั่นควรเปิดให้ส่วนขยายและปิดการดัดแปลง
เอนทิตีซอฟต์แวร์เช่นคลาสโมดูลและฟังก์ชั่นควรเปิดให้ขยาย แต่ปิดสำหรับการดัดแปลง
ความหมายของหลักการเปิดและปิดคือเอนทิตีซอฟต์แวร์ควรบรรลุการเปลี่ยนแปลงผ่านส่วนขยายมากกว่าโดยการแก้ไขรหัสที่มีอยู่
เอนทิตีซอฟต์แวร์รวมถึงส่วนต่อไปนี้:
หลักการของการเปิดและปิดเป็นหลักการสำหรับข้อ จำกัด ในการออกแบบการพัฒนาในปัจจุบันสูตรสำหรับสิ่งต่าง ๆ ของเอนทิตีซอฟต์แวร์
หมายเหตุ: หลักการของการเปิดและปิดเปิดให้ส่วนขยายและการปรับเปลี่ยนการปิดไม่ได้หมายความว่าไม่มีการแก้ไขใด ๆ การเปลี่ยนแปลงโมดูลระดับต่ำจะต้องควบคู่ไปกับโมดูลระดับสูงมิฉะนั้นจะเป็นตัวอย่างโค้ดที่แยกได้และไร้ความหมาย
ประเภทของการเปลี่ยนแปลง:
เส้นทางพื้นฐานของโครงการควรมีดังนี้: การพัฒนาโครงการการสร้างใหม่การทดสอบการผลิตการดำเนินงานและการบำรุงรักษา การสร้างใหม่สามารถปรับเปลี่ยนการออกแบบและรหัสดั้งเดิมและการดำเนินการและการบำรุงรักษาสามารถลดการปรับเปลี่ยนรหัสต้นฉบับรักษาความบริสุทธิ์ของรหัสประวัติและปรับปรุงความเสถียรของระบบ
ความสำคัญของหลักการเปิดและปิด:
1. ผลกระทบของหลักการเปิดและปิดต่อการทดสอบ หลักการเปิดและปิดคือการทำให้รหัสทดสอบเดิมยังคงทำงานตามปกติ เราต้องทดสอบรหัสเพิ่มเติมเท่านั้น
2. หลักการของการเปิดและปิดสามารถปรับปรุงความสามารถในการนำกลับมาใช้ใหม่ได้ ในการออกแบบเชิงวัตถุตรรกะทั้งหมดประกอบด้วยตรรกะอะตอมแทนที่จะใช้ตรรกะทางธุรกิจอย่างอิสระในชั้นเรียน ด้วยวิธีนี้สามารถนำรหัสกลับมาใช้ใหม่ได้ ยิ่งมีความละเอียดน้อยเท่าใดความเป็นไปได้ของการถูกนำกลับมาใช้ใหม่ก็ยิ่งมากขึ้นเท่านั้น
3. หลักการเปิดและปิดสามารถปรับปรุงข้อกำหนดของการพัฒนาเชิงวัตถุในการบำรุงรักษา
วิธีใช้หลักการเปิดและปิด:
1. ข้อ จำกัด เชิงนามธรรมก่อนขยายส่วนขยายผ่านข้อ จำกัด ของอินเทอร์เฟซหรือข้อ จำกัด ของคลาสนามธรรมและไม่อนุญาตให้ใช้วิธีการสาธารณะที่ไม่มีอยู่ในอินเทอร์เฟซหรือคลาสนามธรรม
ประการที่สองลองใช้อินเทอร์เฟซหรือคลาสนามธรรมสำหรับประเภทพารามิเตอร์และวัตถุอ้างอิงมากกว่าคลาสการใช้งาน
ประการที่สามพยายามที่จะรักษาความมั่นคงให้มากที่สุดเท่าที่จะเป็นไปได้และเมื่อพิจารณาแล้วก็ไม่อนุญาตให้มีการปรับเปลี่ยน
2. ข้อมูลเมตาดาต้าการควบคุมข้อมูลเมตาดาต้าเป็นข้อมูลที่ใช้อธิบายสภาพแวดล้อมและข้อมูล ในแง่ของ Layman มันเป็นพารามิเตอร์การกำหนดค่า พารามิเตอร์สามารถรับได้จากไฟล์หรือจากฐานข้อมูล
คอนเทนเนอร์สปริงเป็นตัวอย่างทั่วไปของพฤติกรรมของโมดูลควบคุมข้อมูลเมตาและสิ่งที่ดีที่สุดคือการผกผันของการควบคุม
3. การกำหนดกฎบัตรโครงการ ในทีมมันเป็นสิ่งสำคัญมากที่จะสร้างกฎบัตรโครงการเพราะกฎบัตรระบุข้อตกลงที่บุคลากรทุกคนต้องปฏิบัติตาม สำหรับโครงการข้อตกลงดีกว่าการกำหนดค่า
4. การเปลี่ยนแปลงของบรรจุภัณฑ์มีสองความหมาย:
ขั้นแรกให้ห่อหุ้มการเปลี่ยนแปลงเดียวกันลงในอินเทอร์เฟซหรือคลาสนามธรรม
ประการที่สองห่อหุ้มการเปลี่ยนแปลงที่แตกต่างกันในอินเทอร์เฟซที่แตกต่างกันหรือคลาสนามธรรมและไม่ควรมีการเปลี่ยนแปลงสองอย่างที่แตกต่างกันในอินเทอร์เฟซเดียวกันหรือคลาสนามธรรม
ตัวอย่าง
นี่คือตัวอย่างก่อนอื่นตัวอย่างที่ไม่ดี:
คลาสกราฟคลาส {โมฆะสาธารณะ drawshape (รูปร่าง s) {ถ้า (s.m_type == 1) drawRectangle (s); อื่นถ้า (s.m_type == 2) drawcircle (s); } โมฆะสาธารณะ drawcircle (วงกลม r) {.... } โมฆะสาธารณะ drawrectangle (สี่เหลี่ยมผืนผ้า r) {.... }} รูปร่างคลาส {int m_type; } คลาสสี่เหลี่ยมผืนผ้าขยายรูปร่าง {rectangle () {super.m_type = 1; }} วงกลมคลาสขยายรูปร่าง {circle () {super.m_type = 2; -เมื่อเราต้องการขยายรูปร่างเราต้องเข้าใจคลาส Graphicediter ก่อนจากนั้นเพิ่มประเภทใหม่ใน drawshape แล้วเพิ่มฟังก์ชั่น นี่คือรหัสที่ได้รับการปรับปรุง:
Class Graphiceditor {public void drawshape (รูปร่าง s) {s.draw (); }} รูปร่างคลาส {บทคัดย่อเป็นโมฆะวาด (); } คลาสสี่เหลี่ยมผืนผ้าขยายรูปร่าง {public void draw () {// วาดรูปสี่เหลี่ยมผืนผ้า}}}
ไม่จำเป็นต้องเข้าใจตรรกะการวาดภาพให้วางการนำไปใช้เฉพาะลงในคลาสย่อย
สรุป:
1. การปฏิบัติตามหลักการเปิดและปิดสามารถปรับปรุงความยืดหยุ่นและการบำรุงรักษาซอฟต์แวร์
2. รูปแบบการออกแบบและหลักการออกแบบส่วนใหญ่เกี่ยวกับการตระหนักถึงหลักการเปิดและปิด