คำจำกัดความ: ขยายฟังก์ชันการทำงานของวัตถุแบบไดนามิกโดยไม่ต้องเปลี่ยนไฟล์ต้นฉบับและใช้การสืบทอด มันห่อวัตถุจริงโดยการสร้างวัตถุห่อหุ้มนั่นคือการตกแต่ง
คุณสมบัติ:
(1) วัตถุตกแต่งและวัตถุจริงมีอินเทอร์เฟซเดียวกัน วิธีนี้วัตถุลูกค้าสามารถโต้ตอบกับวัตถุตกแต่งในลักษณะเดียวกับวัตถุจริง
(2) วัตถุตกแต่งมีการอ้างอิงถึงวัตถุจริง
(3) วัตถุตกแต่งยอมรับคำขอทั้งหมดจากลูกค้า มันส่งต่อคำขอเหล่านี้ไปยังวัตถุจริง
(4) วัตถุตกแต่งสามารถเพิ่มฟังก์ชั่นเพิ่มเติมก่อนหรือหลังการส่งต่อคำขอเหล่านี้ สิ่งนี้ทำให้มั่นใจได้ว่าในรันไทม์สามารถเพิ่มฟังก์ชั่นเพิ่มเติมจากภายนอกได้โดยไม่ต้องแก้ไขโครงสร้างของวัตถุที่กำหนด ในการออกแบบเชิงวัตถุการขยายการทำงานไปยังคลาสที่กำหนดมักจะทำได้ผ่านการสืบทอด
แอปพลิเคชันในการพัฒนาระดับองค์กรและเฟรมเวิร์กที่ใช้กันทั่วไป: IO สตรีมมิ่งสถาปัตยกรรมพื้นฐาน
องค์ประกอบ:
(1) บทบาทส่วนประกอบนามธรรม: ให้อินเทอร์เฟซนามธรรมเพื่อควบคุมวัตถุที่พร้อมที่จะได้รับความรับผิดชอบเพิ่มเติม
(2) บทบาทองค์ประกอบที่เป็นรูปธรรม: กำหนดคลาสที่จะได้รับความรับผิดชอบเพิ่มเติม
(3) บทบาทของมัณฑนากร: ถืออินสแตนซ์ของวัตถุส่วนประกอบและดำเนินการอินเทอร์เฟซที่สอดคล้องกับส่วนต่อประสานส่วนประกอบนามธรรม
(4) บทบาทมัณฑนากรคอนกรีต: รับผิดชอบในการเพิ่มความรับผิดชอบเพิ่มเติมให้กับวัตถุส่วนประกอบ
ตัวอย่างเฉพาะ:
/*** ตัวอย่างต่อไปนี้ของบ้านตกแต่ง*/การสาธิตคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {Generichouse House = New Generichouse (); โรงรถโรงรถ = โรงรถใหม่ (บ้าน); Garage.dosomething (); ครัวครัว = ห้องครัวใหม่ (บ้าน); Kitchen.dosomething (); }}/*** บทบาทส่วนประกอบนามธรรม: อินเทอร์เฟซเพื่อควบคุมตำแหน่งของการตกแต่งที่เฉพาะเจาะจง*/อินเตอร์เฟส abstracthouse {โมฆะสาธารณะ dosomething ();}/*** บทบาทการตกแต่ง: ถือวัตถุที่จะตกแต่ง*/คลาสมาสเตอร์ อาจารย์สาธารณะ (abstracthouse abstracthouse) {this.abstracthouse = abstracthouse; } โมฆะสาธารณะ dosomething () {system.out.println ("บทบาทการตกแต่ง: เจ้าของบทบาทตกแต่งนี่คือเจ้าของบ้าน"); abstracthouse.dosomething (); }}/*** บทบาทส่วนประกอบเฉพาะ: วัตถุเฉพาะที่จำเป็นต้องตกแต่ง*/คลาส Generichouse ใช้ abstracthouse {โมฆะสาธารณะ dosomething () {system.out.println ("บทบาทที่สร้างขึ้นเฉพาะ: บ้านสามารถอาศัยอยู่ในผู้คนและที่พักพิงจากลมและฝน!"); }}/*** บทบาทการตกแต่งที่เฉพาะเจาะจง: การตกแต่งที่เฉพาะเจาะจงทำที่นี่และมันสืบทอดมาจากบทบาทการตกแต่ง เนื่องจากบทบาทการตกแต่งมีวัตถุตกแต่ง * ดังนั้นจึงมีวัตถุตกแต่งและสามารถตกแต่งได้ */ชั้นเรียนในชั้นเรียนขยายต้นแบบ {โรงรถสาธารณะ (Abstracthouse abstracthouse) {super (abstracthouse); } โมฆะสาธารณะ dosomething () {super.dosomething (); System.out.println ("บทบาทการตกแต่งที่เฉพาะเจาะจง: ตกแต่งที่นี่ตกแต่งบ้านหลังหนึ่งเข้าไปในโรงรถเพื่อให้บ้านสามารถเก็บรถ"); }}/*** บทบาทการตกแต่งที่เฉพาะเจาะจง: การตกแต่งที่เฉพาะเจาะจงทำที่นี่มันสืบทอดมาจากบทบาทการตกแต่งเนื่องจากบทบาทการตกแต่งถือวัตถุตกแต่ง* ดังนั้นมันจึงถือวัตถุตกแต่งและสามารถตกแต่งห้องครัว*/คลาสได้ } โมฆะสาธารณะ dosomething () {super.dosomething (); System.out.println ("บทบาทการตกแต่งที่เฉพาะเจาะจง: ตกแต่งที่นี่ตกแต่งบ้านหลังหนึ่งเข้าไปในครัวเพื่อให้บ้านสามารถปรุงอาหาร"); -ในการพัฒนาจริงฟังก์ชั่นบรรจุภัณฑ์ของการตกแต่งรูปแบบมีบทบาทที่ยอดเยี่ยม เราสามารถดำเนินการอื่น ๆ บนวัตถุโดยไม่ต้องเปลี่ยนวัตถุต้นฉบับซึ่งสามารถป้องกันไม่ให้เราเปลี่ยนวัตถุ แต่ในเวลาเดียวกันเราสามารถดำเนินการบางอย่างได้ดี
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น