ส่งคำขอจากไคลเอนต์ลงในวัตถุช่วยให้คุณสามารถกำหนดพารามิเตอร์ไคลเอนต์ด้วยคำขอที่แตกต่างกัน ใช้ในการแยก "ผู้ร้องขอพฤติกรรม" และ "ผู้ใช้พฤติกรรม" การมีเพศสัมพันธ์แบบหลวมระหว่างทั้งสองสามารถทำได้เพื่อปรับให้เข้ากับการเปลี่ยนแปลง แยกปัจจัยการเปลี่ยนแปลงและไม่เปลี่ยนแปลง
1. บทบาท
สั่งการ
กำหนดอินเทอร์เฟซของคำสั่งและประกาศวิธีการดำเนินการ
คอนกรีตคอมมอนด์
วัตถุการใช้งานอินเตอร์เฟสคำสั่งคือการใช้งาน "เสมือน" มันมักจะถือตัวรับสัญญาณและเรียกฟังก์ชันของตัวรับสัญญาณเพื่อดำเนินการให้เสร็จสิ้นการดำเนินการโดยคำสั่ง
เครื่องรับสัญญาณ
ผู้รับวัตถุที่ดำเนินการคำสั่งอย่างแท้จริง ชั้นเรียนใด ๆ อาจกลายเป็นตัวรับสัญญาณตราบเท่าที่สามารถใช้ฟังก์ชั่นที่สอดคล้องกันตามคำสั่งที่ต้องการ
ผู้ปลุกปั่น
วัตถุคำสั่งจำเป็นต้องดำเนินการตามคำขอและมักจะถือวัตถุคำสั่งและสามารถถือวัตถุคำสั่งจำนวนมากได้ นี่คือที่ลูกค้าทริกเกอร์คำสั่งและต้องการคำสั่งในการดำเนินการที่สอดคล้องกันซึ่งหมายความว่าเทียบเท่ากับการใช้รายการของวัตถุคำสั่ง
ลูกค้า
สร้างวัตถุคำสั่งเฉพาะและตั้งค่าตัวรับสัญญาณของวัตถุคำสั่ง โปรดทราบว่านี่ไม่ใช่ลูกค้าในความหมายทั่วไปของเรา แต่กำลังรวบรวมวัตถุคำสั่งและตัวรับสัญญาณ บางทีมันอาจจะดีกว่าที่จะเรียกไคลเอนต์นี้เป็นแอสเซมเบลอร์เพราะไคลเอนต์ที่ใช้คำสั่งทริกเกอร์การดำเนินการจาก Invoker
2. ข้อดี
3. ข้อเสีย <br /> การใช้โหมดคำสั่งอาจทำให้บางระบบมีคลาสคำสั่งเฉพาะมากเกินไป เนื่องจากต้องใช้คลาสคำสั่งเฉพาะสำหรับแต่ละคำสั่งระบบบางระบบอาจต้องใช้คลาสคำสั่งเฉพาะจำนวนมากซึ่งจะส่งผลกระทบต่อการใช้โหมดคำสั่ง
iv. สถานการณ์ที่ใช้บังคับ
5. แอปพลิเคชัน <br /> การจำลองรวมถึงคำสั่ง Power-On, Shutdown และการเปลี่ยนแปลงสำหรับการทำงานของทีวี รหัสมีดังนี้
// อินเตอร์เฟสสำหรับการดำเนินการคำสั่งคำสั่งอินเตอร์เฟสสาธารณะ {void execute (); } // ตัวรับสัญญาณคำสั่งตัวรับสัญญาณสาธารณะทีวี {สาธารณะ int currentChannel = 0; โมฆะสาธารณะ Turnon () {System.out.println ("Televisino เปิดอยู่"); } โมฆะสาธารณะ turnoff () {system.out.println ("โทรทัศน์ปิด"); } โมฆะสาธารณะ Changechannel (ช่อง int) {this.currentChannel = ช่อง; System.out.println ("ช่องทีวีตอนนี้คือ" + ช่อง); }} // ปิดคำสั่ง concretecommand คลาสสาธารณะ Commandon ใช้คำสั่ง {ทีวีส่วนตัว mytv; Public Commandon (ทีวีทีวี) {mytv = tv; } โมฆะสาธารณะดำเนินการ () {mytv.turnon (); }} // ปิดคำสั่ง concretecommand คลาสสาธารณะ Commandoff ใช้คำสั่ง {ทีวีส่วนตัว mytv; Public Commandoff (ทีวีทีวี) {mytv = tv; } โมฆะสาธารณะดำเนินการ () {mytv.turnoff (); }} // คำสั่งสลับช่องสัญญาณ concretecommand คลาสสาธารณะ commandChange ใช้คำสั่ง {ทีวีส่วนตัว mytv; ช่องสัญญาณส่วนตัว Public CommandChange (ทีวีทีวี, ช่อง int) {mytv = tv; this.channel = channel; } โมฆะสาธารณะดำเนินการ () {mytv.changechannel (ช่อง); }} // มันถือได้ว่าเป็นตัวควบคุมระดับรีโมทคอนโทรลการควบคุมระดับสาธารณะ {คำสั่งส่วนตัว oncommand, OffCommand, Changechannel; การควบคุมสาธารณะ (คำสั่งเปิด, ปิดคำสั่ง, ช่องคำสั่ง) {onCommand = on; OffCommand = ปิด; Changechannel = ช่อง; } โมฆะสาธารณะ turnon () {oncommand.execute (); } โมฆะสาธารณะ turnoff () {OffCommand.execute (); } โมฆะสาธารณะ Changechannel () {changechannel.execute (); }} // ไคลเอ็นต์ระดับไคลเอนต์คลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// ผู้รับคำสั่งผู้รับรับทีวี mytv = ทีวีใหม่ (); // power-on command concreteCommond Commandon on = new Commandon (MyTV); // คำสั่ง POWER-OFF ConcreTeCommond Commandoff OFF = New Commandoff (MYTV); // ช่องสัญญาณสลับคำสั่ง concreteCommond channel channel = new CommandChange (MyTV, 2); // คำสั่งควบคุมวัตถุควบคุมตัวควบคุมการควบคุม = ควบคุมใหม่ (เปิด, ปิด, ช่อง); // power-on control.turnon (); // สวิตช์ช่องควบคุม ChangeChannel (); // ปิดการควบคุม Turnoff (); - ผลการดำเนินการ
โทรทัศน์เปิดอยู่
ตอนนี้ช่องทีวีคือ 2
โทรทัศน์ปิดอยู่
6. สรุป
1. สาระสำคัญของโหมดคำสั่งคือการห่อหุ้มคำสั่งและแยกความรับผิดชอบในการออกคำสั่งและความรับผิดชอบในการดำเนินการคำสั่ง
2. แต่ละคำสั่งคือการดำเนินการ: ฝ่ายที่ร้องขอจะออกคำขอโดยกำหนดให้มีการดำเนินการที่จะดำเนินการ; ฝ่ายที่ได้รับจะได้รับการร้องขอและดำเนินการ
3. โหมดคำสั่งอนุญาตให้ฝ่ายที่ร้องขอเป็นอิสระจากฝ่ายที่ได้รับดังนั้นฝ่ายที่ร้องขอไม่จำเป็นต้องรู้อินเทอร์เฟซของฝ่ายที่ได้รับคำขอและไม่ต้องรู้ว่าจะได้รับคำขออย่างไรไม่ว่าจะดำเนินการอย่างไร
4. โหมดคำสั่งทำให้คำขอเป็นวัตถุซึ่งสามารถจัดเก็บและส่งผ่านเหมือนวัตถุอื่น ๆ
5. คีย์ไปยังโหมดคำสั่งคือการแนะนำอินเทอร์เฟซคำสั่งนามธรรมและโปรแกรมผู้ส่งสำหรับอินเตอร์เฟสคำสั่งนามธรรม เฉพาะคำสั่งเฉพาะที่ใช้อินเตอร์เฟสคำสั่งนามธรรมเท่านั้นที่สามารถเชื่อมโยงกับตัวรับสัญญาณได้
ข้างต้นเป็นการแนะนำรายละเอียดเกี่ยวกับรูปแบบการออกแบบคำสั่ง Java ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคน