Latest web development tutorials
×

设计模式 หลักสูตร

รูปแบบการออกแบบ รู้เบื้องต้นเกี่ยวกับรูปแบบการออกแบบ โหมดโรงงาน แบบโรงงานย่อ รูปแบบเดี่ยว รุ่นสร้าง รุ่นต้นแบบ อะแดปเตอร์รุ่น สะพานโหมด รูปแบบตัวกรอง โหมดการทำงานร่วมกัน มัณฑนากร รูปแบบซุ้ม ฟลายเวท โหมดพร็อกซี่ ห่วงโซ่ของรูปแบบความรับผิดชอบ โหมดคำสั่ง รูปแบบล่าม โหมดซ้ำแล้วซ้ำอีก รูปแบบที่เป็นสื่อกลาง รูปแบบของที่ระลึก รูปแบบการสังเกตการณ์ รูปแบบของรัฐ null Object Model โหมดกลยุทธ์ โหมดแม่แบบ รูปแบบของผู้เข้าชม MVC โหมด โหมดตัวแทน โหมดนิติบุคคลองค์ประกอบ รูปแบบการเข้าถึงข้อมูลของวัตถุ รูปแบบการควบคุมด้านหน้า intercepting รูปแบบตัวกรอง รูปแบบการบริการผู้แทนจำหน่าย วัตถุ Transfer รุ่น

设计模式其他

ทรัพยากรโหมดออกแบบ

โหมดการทำงานร่วมกัน

โหมดรวม (แบบคอมโพสิต) ยังเป็นที่รู้จักในฐานะส่วนหนึ่งของรูปแบบโดยรวมสำหรับกลุ่มของวัตถุที่คล้ายกันเป็นวัตถุเดียว รูปแบบรวมกันอยู่บนพื้นฐานของโครงสร้างที่จะรวมวัตถุที่แสดงถึงส่วนหนึ่งและระดับโดยรวม ประเภทของรูปแบบการออกแบบเป็นรูปแบบโครงสร้างนี้จะสร้างโครงสร้างของกลุ่มเป้าหมาย

การทำแบบนี้สร้างขึ้นในชั้นเรียนมีกลุ่มของตัวเองของวัตถุ ชั้นนี้จะมีวิธีการแก้ไขวัตถุกลุ่มเดียวกัน

เราจากตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้การรวมกันของรูปแบบที่ ตัวอย่างแสดงให้เห็นถึงลำดับชั้นของพนักงานในองค์กร

การแนะนำ

เจตนา: เขียนวัตถุลงในโครงสร้างต้นไม้เพื่อเป็นตัวแทนของส่วน "- ทั้ง" ลำดับชั้นโหมดการทำงานร่วมกันจะช่วยให้ผู้ใช้สามารถใช้วัตถุเดียวและองค์ประกอบของวัตถุอย่างสม่ำเสมอ

เป็นหลักในการแก้ปัญหา: มันเป็นปัญหาของต้นไม้ของเราเบลอแนวคิดขององค์ประกอบที่เรียบง่ายและองค์ประกอบที่ซับซ้อนที่ลูกค้าสามารถจัดการกับองค์ประกอบที่ง่ายในการจัดการองค์ประกอบที่ซับซ้อนเพื่อให้โครงสร้างภายในของ decoupling ของลูกค้าและความซับซ้อนขององค์ประกอบ

เมื่อจะใช้: 1, วัตถุที่คุณต้องการที่จะเป็นตัวแทนของส่วนหนึ่ง - ทั้งลำดับชั้น (ต้นไม้)2 คุณต้องการให้ผู้ใช้ที่แตกต่างกันที่จะไม่สนใจการรวมกันของวัตถุที่มีวัตถุเดียวที่ผู้ใช้จะถูกรวมโครงสร้างแบบครบวงจรสำหรับวัตถุทั้งหมด

วิธีการแก้ไข: กิ่งไม้และใบไม้เพื่อให้บรรลุอินเตอร์เฟซแบบครบวงจรอินเตอร์เฟซคือการรวมกันของสาขาภายใน

รหัสสำคัญ: ไม้องค์ประกอบภายในของอินเตอร์เฟซและมีรายการคุณลักษณะภายในที่ใส่ชิ้นส่วน

ตัวอย่างการใช้งาน: 1, การแสดงออกทางคณิตศาสตร์รวมทั้งตัวถูกดำเนินการผู้ประกอบการและถูกดำเนินการอื่น ๆ ซึ่งอาจจะมีการดำเนินการอีกต้นไม้ประกอบการผู้ประกอบการและถูกดำเนินการอื่น ๆ2, JAVA AWT และแกว่งสำหรับปุ่มและช่องทำเครื่องหมายเป็นใบกิ่งไม้ตู้คอนเทนเนอร์

ข้อดี: 1, โมดูลระดับสูงเรียกง่ายๆ2 โหนดเพิ่มขึ้นเสรีภาพ

จุดด้อย: เมื่อใช้โหมดรวมใบและกิ่งก้านของมันมีการดำเนินการประกาศคลาสแทนของอินเตอร์เฟซในการละเมิดของการพึ่งพาผกผันหลักการ

สถานการณ์การใช้งาน: ส่วนฉากโดยรวมเช่นเมนูต้นไม้ไฟล์การจัดการโฟลเดอร์

หมายเหตุ: เมื่อคุณกำหนดหมวดหมู่ต่างๆ

การสำนึก

เรามีพนักงานระดับชั้นได้รับการปฏิบัติที่เป็นส่วนผสมของการเรียนรุ่นที่CompositePatternDemoเราแสดงให้เห็นถึงการใช้งานของพนักงานระดับชั้นเพื่อเพิ่มลำดับชั้นสรรพสินค้าและพิมพ์พนักงานทุกคน

การผสมผสานรูปแบบแผนภาพ UML

ขั้นตอนที่ 1

สร้างคลาสพนักงานระดับที่มีรายชื่อของวัตถุพนักงาน

Employee.java

นำเข้า java.util.ArrayList;
นำเข้า java.util.List;

พนักงานระดับสาธารณะ {
   ชื่อ String เอกชน
   ฝ่าย String เอกชน
   เงินเดือน int เอกชน
   รายการส่วนตัว <ลูกจ้าง> ผู้ใต้บังคับบัญชา;

   // สร้างพนักงานสาธารณะ (ชื่อ String, String ฝ่าย int Sal) {
      ชื่อ this.name =;
      this.dept = ฝ่าย;
      this.salary = Sal;
      ผู้ใต้บังคับบัญชา = ArrayList ใหม่ <ลูกจ้าง> ();
   }

   โมฆะสาธารณะเพิ่ม (พนักงานจ) {
      subordinates.add (E);
   }

   โมฆะสาธารณะลบ (พนักงานจ) {
      subordinates.remove (E);
   }

   รายการสาธารณะ <ลูกจ้าง> getSubordinates () {
     ผู้ใต้บังคับบัญชากลับ;
   }

   สาธารณะ String toString () {
      กลับ ( "พนักงาน: [ชื่อ:" + ชื่อ 
      + "Dept:" + ฝ่าย + "เงินเดือน"
      + เงินเดือน + "]");
   }   
}

ขั้นตอนที่ 2

ใช้คลาสของพนักงานเพื่อสร้างและพิมพ์ลำดับชั้นของพนักงาน

CompositePatternDemo.java

CompositePatternDemo คลาสที่สาธารณะ {
   ประชาชนเป็นโมฆะคง main (String args []) {
      ซีอีโอของพนักงานพนักงานใหม่ = ( "จอห์น", "ซีอีโอ" 30000);

      headSales พนักงานใหม่ = พนักงาน ( "โรเบิร์ต", "ขายหัว" 20000);

      พนักงาน headMarketing = ใหม่พนักงาน ( "มิเชล", "การตลาดหัวหน้า" 20000);

      clerk1 ลูกจ้างพนักงานใหม่ = ( "ลอร่า", "การตลาด" 10000);
      clerk2 ลูกจ้างพนักงานใหม่ = ( "บ๊อบ", "การตลาด" 10000);

      พนักงาน salesExecutive1 = ใหม่พนักงาน ( "ริชาร์ด", "ขาย" 10000);
      พนักงาน salesExecutive2 = ใหม่พนักงาน ( "ร็อบ", "ขาย" 10000);

      CEO.add (headSales);
      CEO.add (headMarketing);

      headSales.add (salesExecutive1);
      headSales.add (salesExecutive2);

      headMarketing.add (clerk1);
      headMarketing.add (clerk2);

      // พิมพ์ทั้งหมดขององค์กรพนักงาน System.out.println (ซีอีโอ); 
      สำหรับ (พนักงาน headEmployee: CEO.getSubordinates ()) {
         System.out.println (headEmployee);
         สำหรับ (พนักงานพนักงาน: headEmployee.getSubordinates ()) {
            System.out.println (พนักงาน);
         }
      }		
   }
}

ขั้นตอนที่ 3

ตรวจสอบการส่งออก

พนักงาน: [ชื่อ: จอห์นฝ่าย: ซีอีโอของเงินเดือน: 30000]
พนักงาน: [ชื่อ: โรเบิร์ตลึก: หัวหน้าฝ่ายขายเงินเดือน: 20000]
พนักงาน: [ชื่อ: ริชาร์ดฝ่ายขายเงินเดือน: 10000]
พนักงาน: [ชื่อ: ร็อบฝ่ายขายเงินเดือน: 10000]
พนักงาน: [ชื่อ: มิเชลลึก: หัวหน้าการตลาด, เงินเดือน: 20000]
พนักงาน: [ชื่อ: ลอร่า, ฝ่ายการตลาดเงินเดือน: 10000]
พนักงาน: [ชื่อ: บ๊อบ, ฝ่ายการตลาดเงินเดือน: 10000]