โหมดคำสั่งเป็นรูปแบบที่สับสนมากที่สุด ในการเขียนโปรแกรมจริงของคุณ โหมดคำสั่งไม่ใช่แบบจำลองที่เฉพาะเจาะจงมากและเป็นความยืดหยุ่นที่ทำให้ผู้คนรู้สึกสับสนเล็กน้อย
คำสั่งคำสั่ง
รหัสโหมดคำสั่งจำนวนมากถูกกำหนดเป้าหมายที่อินเทอร์เฟซกราฟิก
ห่อหุ้มคำสั่งเหล่านี้ลงในคลาสจากนั้นผู้ใช้ (ผู้โทร) ทำงานในคลาสนี้ . (ผู้โทร) ชี้ไปที่รหัสที่เปิดเอกสารโดยตรงและใช้โหมดคำสั่งซึ่งหมายถึงการเพิ่มตัวกลางระหว่างทั้งสองการทำลายความสัมพันธ์โดยตรงนี้และแยกทั้งสองโดยทั่วไปไม่มีความสัมพันธ์
เห็นได้ชัดว่าประโยชน์ของการทำเช่นนี้คือมันสอดคล้องกับลักษณะของบรรจุภัณฑ์และลดการมีเพศสัมพันธ์
จากโหมดคำสั่งฉันยังพบว่า "ปัญหาทั่วไป" ของโหมดการออกแบบ: ฉันดูเหมือนจะซับซ้อนปัญหาง่าย ๆ และต้องการเพิ่มบุคคลที่สามในชั้นเรียนที่แตกต่างกัน นำรหัสกลับมาใช้ซ้ำ
วิธีใช้โหมดคำสั่ง
รหัสโหมดคำสั่งเฉพาะนั้นมีความหลากหลายเนื่องจากมีวิธีต่าง ๆ ในการห่อหุ้มคำสั่งระบบที่แตกต่างกัน ตัวอย่างต่อไปนี้คือการห่อหุ้มคำสั่งในรายการคอลเลกชัน
โหมดคำสั่งทั่วไปต้องใช้อินเทอร์เฟซ มีวิธีการรวมในอินเทอร์เฟซซึ่งเป็น "ห่อหุ้มคำสั่ง/คำขอลงในวัตถุ":
การคัดลอกรหัสมีดังนี้:
คำสั่งอินเทอร์เฟซสาธารณะ {
โมฆะนามธรรมสาธารณะดำเนินการ ();
-
รหัสคำสั่ง/คำขอเฉพาะคือการใช้คำสั่งอินเทอร์เฟซและมีคำสั่งเฉพาะสามข้อด้านล่าง:
การคัดลอกรหัสมีดังนี้:
วิศวกรระดับสาธารณะใช้คำสั่ง {
โมฆะสาธารณะดำเนินการ () {
// ทำคำสั่งของวิศวกร
-
-
โปรแกรมเมอร์คลาสสาธารณะใช้คำสั่ง {
โมฆะสาธารณะดำเนินการ () {
// ทำคำสั่งของโปรแกรมเมอร์
-
-
นักการเมืองระดับสาธารณะใช้คำสั่ง {
โมฆะสาธารณะดำเนินการ () {
// ทำคำสั่งของนักการเมือง
-
-
ตามปกติเราสามารถเรียกคำสั่งทั้งสามนี้โดยตรง แต่ใช้โหมดคำสั่งเราต้องห่อหุ้มพวกเขาและโยนลงในรายการกล่องดำ:
การคัดลอกรหัสมีดังนี้:
ผู้ผลิตชั้นเรียนสาธารณะ {
รายการคงที่สาธารณะ produceverequests () {
รายการคิว = arrayList ใหม่ ();
queue.add (New Domesticenerer ());
queue.add (นักการเมืองใหม่ ());
queue.add (โปรแกรมเมอร์ใหม่ ());
กลับคิว;
-
-
หลังจากคำสั่งทั้งสามเข้าสู่รายการพวกเขาได้สูญเสียลักษณะการปรากฏตัวของพวกเขา
การคัดลอกรหัสมีดังนี้:
TestCommand ระดับสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
list queue = producer.producerequests ();
สำหรับ (iterator it = queue.iterator (); it.hasnext ();)
// นำคุณสมบัติกลางและอื่น ๆ ของรายการออกมาและคุณไม่สามารถระบุได้
// อย่างน้อยพวกเขาคือ "ลูกชาย" ของคำสั่งอินเทอร์เฟซ
((คำสั่ง) it.next ()). ดำเนินการ ();
-
-
จะเห็นได้ว่าผู้โทรโดยทั่วไปจะเกี่ยวข้องกับอินเทอร์เฟซและไม่ได้โต้ตอบกับการใช้งานที่เฉพาะเจาะจง ไม่จำเป็นต้องแก้ไขรหัสในการทดสอบผู้โทร
หลังจากทำความเข้าใจหลักการหลักของรหัสข้างต้นทุกคนควรมีวิธีการใช้งานของตัวเองโดยเฉพาะอย่างยิ่งในการแยกผู้โทรและคำสั่งเฉพาะมีวิธีการใช้งานมากมาย . วิธีการนี้มีไว้สำหรับการสาธิต
เหตุผลที่ดีในการใช้โหมดคำสั่งนั้นเป็นเพราะสามารถใช้ฟังก์ชันการเลิกทำและแต่ละคำสั่งเฉพาะสามารถจดจำการกระทำที่เพิ่งดำเนินการและกู้คืนได้หากจำเป็น
โหมดคำสั่งใช้กันอย่างแพร่หลายในการออกแบบอินเตอร์เฟส คำสั่งเมนูในโหมดคำสั่ง Java Swing