ภาพรวม
โหมดการตกแต่งเป็นฟังก์ชั่นของการขยายวัตถุอย่างโปร่งใสให้กับลูกค้าและเป็นทางเลือกในการสืบทอดความสัมพันธ์ กล่าวอีกนัยหนึ่งลูกค้าไม่คิดว่ามีความแตกต่างระหว่างวัตถุก่อนและหลังการตกแต่ง โหมดการตกแต่งสามารถขยายฟังก์ชั่นของวัตถุโดยไม่ต้องสร้างคลาสย่อยมากขึ้น กุญแจสำคัญในโหมดการตกแต่งคือส่วนขยายนี้โปร่งใสอย่างสมบูรณ์
โครงสร้างของรูปแบบ
แผนภาพคลาส UML:
อักขระในโหมดการตกแต่ง:
บทคัดย่อบทบาท (โครงการ): ให้อินเทอร์เฟซเพื่อควบคุมวัตถุที่พร้อมรับความรับผิดชอบเพิ่มเติม
บทบาทองค์ประกอบเฉพาะ (ลูกจ้าง): กำหนดคลาสที่จะได้รับความรับผิดชอบเพิ่มเติม
บทบาทการตกแต่ง (ผู้จัดการ): เก็บอินสแตนซ์ของวัตถุส่วนประกอบและกำหนดอินเทอร์เฟซที่สอดคล้องกับส่วนต่อประสานส่วนประกอบนามธรรม
บทบาทการตกแต่งที่เฉพาะเจาะจง (Managera, ManagerB): รับผิดชอบในการ "ติด" ความรับผิดชอบเพิ่มเติมกับวัตถุส่วนประกอบ
ตัวอย่างรหัส
การสัมภาษณ์แพ็คเกจ; โครงการอินเทอร์เฟซ {void docoding ();} คลาสพนักงานใช้งานโครงการ {@Override โมฆะสาธารณะ docoding () {system.out.println ("วิศวกรรมคือการเขียนโปรแกรม ... "); }} ตัวจัดการคลาสใช้โครงการ {โครงการโครงการส่วนตัว; ผู้จัดการสาธารณะ (โครงการโครงการ) {this.project = โครงการ; } @Override โมฆะสาธารณะ docoding () {startNewwork (); Project.docoding (); } โมฆะสาธารณะ startNewwork () {}} คลาส managera ขยายผู้จัดการ {public managera (โครงการโครงการ) {super (โครงการ); } @Override โมฆะสาธารณะเริ่มต้นใหม่ () {System.out.println ("ผู้จัดการฝ่ายพัฒนาเริ่มแผนการทำงานใหม่"); }} Class ManagerB ขยายผู้จัดการ {Public ManagerB (โครงการโครงการ) {Super (Project); } @Override โมฆะสาธารณะ startNewwork () {system.out.println ("ผู้จัดการทดสอบเริ่มแผนการทำงานใหม่"); }} การบำรุงรักษาคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (String arg []) {โครงการโครงการ = new Employe (); Project managera = ใหม่ managera (โครงการ); Project ManagerB = ใหม่ ManagerB (โครงการ); managera.docoding (); managerb.docoding (); - ข้อดีและข้อเสียของโหมดตกแต่ง:
ข้อได้เปรียบ:
จุดประสงค์ของโหมดตกแต่งและการสืบทอดคือการขยายการทำงานของวัตถุ แต่โหมดการตกแต่งสามารถให้ความยืดหยุ่นมากกว่าการสืบทอด โหมดการตกแต่งช่วยให้ระบบสามารถตัดสินใจ "ติด" แบบไดนามิก "การตกแต่ง" ที่จำเป็นและความสัมพันธ์ในการสืบทอดนั้นแตกต่างกัน ความสัมพันธ์ในการสืบทอดนั้นคงที่และมีการตัดสินใจก่อนที่ระบบจะทำงาน
ด้วยการใช้หมวดหมู่การตกแต่งที่เฉพาะเจาะจงและการผสมผสานของหมวดหมู่การตกแต่งเหล่านี้นักออกแบบสามารถสร้างพฤติกรรมที่แตกต่างกันมากมาย
ข้อบกพร่อง:
เนื่องจากการใช้รูปแบบการตกแต่งจึงจำเป็นต้องใช้คลาสน้อยกว่าการใช้ความสัมพันธ์ในการสืบทอด การใช้คลาสที่น้อยลงทำให้การออกแบบง่ายขึ้นอย่างแน่นอน อย่างไรก็ตามในทางกลับกันการใช้รูปแบบการตกแต่งจะสร้างวัตถุมากกว่าการใช้ความสัมพันธ์ในการสืบทอด วัตถุเพิ่มเติมสามารถทำผิดพลาดได้ยากโดยเฉพาะอย่างยิ่งเมื่อพวกเขาดูคล้ายกัน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น