ภาพรวม
มันเป็นรูปแบบโครงสร้างที่จัดระเบียบวัตถุในโครงสร้างต้นไม้เพื่อเป็นตัวแทนลำดับชั้น "บางส่วน" ทำให้ลูกค้าไม่ซ้ำกันในการใช้วัตถุแต่ละชิ้นและวัตถุรวม
ไดอะแกรมคลาส UML
แผนภาพคลาสข้างต้นมีบทบาท:
ส่วนประกอบ: ประกาศอินเทอร์เฟซทั่วไปสำหรับวัตถุที่เข้าร่วมในองค์ประกอบไม่ว่าจะเป็นการรวมกันหรือโหนดใบไม้
Leaf: หมายถึงวัตถุโหนดใบในการรวมกันและโหนดใบไม่มีโหนดลูก
คอมโพสิต: แสดงถึงวัตถุที่มีวัตถุเด็กที่เข้าร่วมในการรวมกันและให้พฤติกรรมของการก่อสร้างสาขา;
ตัวอย่างรหัส
นำเข้า java.util.arraylist; นำเข้า java.util.list; ส่วนประกอบคลาสบทคัดย่อ {ชื่อสตริงที่ได้รับการป้องกัน; ส่วนประกอบสาธารณะ (ชื่อสตริง) {this.name = name; } โมฆะนามธรรมสาธารณะเพิ่ม (ส่วนประกอบ C); โมฆะนามธรรมสาธารณะลบ (ส่วนประกอบ C); นามธรรมนามธรรมสาธารณะ GetChild (ความลึก int);} class Leaf ขยายส่วนประกอบ {ใบสาธารณะ (ชื่อสตริง) {super (ชื่อ); } @Override โมฆะสาธารณะเพิ่ม (ส่วนประกอบ c) {system.out.println ("ไม่สามารถเพิ่มลงในใบไม้"); } @Override โมฆะสาธารณะลบ (ส่วนประกอบ c) {system.out.println ("ไม่สามารถลบออกจากใบ"); } @Override โมฆะสาธารณะ getChild (ความลึก int) {String temp = ""; สำหรับ (int i = 0; i <depth; i ++) {temp+= "-"; System.out.println (Temp + Name); }}} คลาสคอมโพสิตขยายส่วนประกอบ {รายการส่วนตัว <Component> children = new ArrayList <> (); คอมโพสิตสาธารณะ (ชื่อสตริง) {super (ชื่อ); } @Override โมฆะสาธารณะเพิ่ม (ส่วนประกอบ c) {children.add (c); } @Override โมฆะสาธารณะลบ (ส่วนประกอบ c) {children.remove (c); } @Override โมฆะสาธารณะ GetChild (ความลึก int) {สำหรับ (ส่วนประกอบ C: เด็ก) {C.GetChild (ความลึก); }}} คลาสสาธารณะหลัก {โมฆะสาธารณะคงที่หลัก (สตริง args []) {composite root = new Composite ("root"); root.add (ใบใหม่ ("leaf a")); root.add (ใบใหม่ ("leaf b")); Composite Compx = New Composite ("Composite X"); compx.add (ใบใหม่ ("leaf xa")); compx.add (ใบใหม่ ("leaf xb")); root.add (compx); compxy คอมโพสิต = ใหม่คอมโพสิต ("คอมโพสิต XY"); compxy.add (ใบใหม่ ("leaf xya")); compxy.add (ใบใหม่ ("leaf xyb")); compx.add (compxy); root.getChild (3); -สถานการณ์แอปพลิเคชัน
1. ต้องใช้ลำดับชั้นของส่วนต่อไปของวัตถุ
2. หากลูกค้าต้องการให้ไคลเอนต์เพิกเฉยต่อความแตกต่างระหว่างวัตถุรวมและวัตถุเดียวไคลเอนต์จะใช้วัตถุทั้งหมดในโครงสร้างรวมกันอย่างสม่ำเสมอ
รูปแบบการรวมกันกำหนดโครงสร้างคลาสที่ประกอบด้วยวัตถุใบและวัตถุคอมโพสิต
ทำให้ลูกค้าง่ายขึ้น
ทำให้ง่ายต่อการเพิ่มหรือลบส่วนย่อย
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น