โหมดกลยุทธ์
ในการวางแผนโหมด (รูปแบบกลยุทธ์) พระราชบัญญัติ Class A หรืออัลกอริทึมที่สามารถเปลี่ยนแปลงได้ที่รันไทม์ ประเภทของรูปแบบการออกแบบนี้เป็นรูปแบบพฤติกรรม
ในโหมดกลยุทธ์ของเราจะสร้างวัตถุและความหลากหลายของกลยุทธ์การปรับเปลี่ยนพฤติกรรมเป็นวัตถุนโยบายที่จะเปลี่ยนการแสดงบริบทวัตถุ วัตถุนโยบายที่จะเปลี่ยนแปลงวัตถุบริบทการดำเนินการขั้นตอนวิธี
การแนะนำ
เจตนา: ความหมายของครอบครัวของอัลกอริทึมที่แค็ปซูลแต่ละคนพวกเขาและทำให้พวกเขาใช้แทนกันได้
เป็นหลักในการแก้ปัญหาในกรณีของอัลกอริทึมที่คล้ายกันหลายใช้ถ้า ... อื่นนำความซับซ้อนและยากที่จะรักษา
เมื่อใช้: ระบบมีหลายหลายประเภทและจะแยกพวกเขาเพียง แต่พฤติกรรมของพวกเขาทันที
วิธีการแก้ไข: จะขั้นตอนวิธีการเหล่านี้เป็นแพคเกจระดับแทนที่โดยพลการ
รหัสสำคัญ: การใช้อินเตอร์เฟซเดียวกัน
ตัวอย่างการใช้งาน: 1, ความคิดที่ดีจูกัดเหลียงแต่ละชุดเป็นกลยุทธ์2 วิธีการเดินทางที่จะเดินทางไปเลือกที่จะขี่จักรยานโดยรถยนต์ทางในการเดินทางแต่ละกลยุทธ์ 3, JAVA AWT LayoutManager
ข้อดี: 1, ขั้นตอนวิธีการได้อย่างอิสระสามารถสลับ2 เพื่อหลีกเลี่ยงการใช้หลายเงื่อนไข 3, scalability ดี
ข้อเสีย: 1, กลยุทธ์จะเพิ่มขึ้น2 ชั้นเรียนทุกคนต้องของการเปิดรับนโยบายต่างประเทศ
สถานการณ์การใช้งาน: 1, ถ้ามีระบบที่หลายชั้นเรียนแตกต่างระหว่างพวกเขาเท่านั้นในการทำงานของพวกเขาแล้วใช้รูปแบบกลยุทธ์แบบไดนามิกสามารถเลือกที่จะปล่อยให้การกระทำพฤติกรรมหลายวัตถุ2 ระบบต้องแบบไดนามิกเลือกหนึ่งในหลาย ๆ ขั้นตอนวิธีการ 3. ถ้าวัตถุมีจำนวนมากของพฤติกรรมถ้าที่ไม่ได้เป็นโหมดที่เหมาะสม, การกระทำเหล่านี้มีการใช้หลายเงื่อนไขจะถูกเลือกคำสั่งเพื่อให้บรรลุ
หมายเหตุ: หากนโยบายของระบบมากกว่าสี่ที่คุณจะต้องพิจารณาการใช้โหมดผสมเพื่อแก้ปัญหาของระดับนโยบายการขยายตัว
การสำนึก
เราจะสร้างที่ดีที่กำหนดอินเตอร์เฟซและการดำเนินกิจกรรมของนิติบุคคลอินเตอร์เฟซที่กลยุทธ์ของกลยุทธ์บริบทคือการใช้ระดับนโยบายบางอย่าง
StrategyPatternDemo เรียนสาธิตของเราโดยใช้บริบทบริบทนโยบายและวัตถุที่จะแสดงให้เห็นถึงพฤติกรรมเมื่อมันถูกนำมาใช้ในการกำหนดค่าหรือเปลี่ยนการเปลี่ยนแปลงนโยบาย
ขั้นตอนที่ 1
สร้างอินเตอร์เฟซ
Strategy.java
กลยุทธ์อินเตอร์เฟซที่สาธารณะ { int สาธารณะ doOperation (int num1, num2 int); }
ขั้นตอนที่ 2
สร้างคลาสนิติบุคคลที่ใช้อินเตอร์เฟซ
OperationAdd.java
เรียนสาธารณะ OperationAdd ดำเนินกลยุทธ์ { @Override int สาธารณะ doOperation (int num1, num2 int) { กลับ num1 + num2; } }
OperationSubstract.java
เรียนสาธารณะ OperationSubstract ดำเนินกลยุทธ์ { @Override int สาธารณะ doOperation (int num1, num2 int) { กลับ num1 - num2; } }
OperationMultiply.java
เรียนสาธารณะ OperationMultiply ดำเนินกลยุทธ์ { @Override int สาธารณะ doOperation (int num1, num2 int) { กลับ num1 * num2; } }
ขั้นตอนที่ 3
สร้างคลาสบริบท
Context.java
บริบทระดับสาธารณะ { กลยุทธ์กลยุทธ์ส่วนตัว บริบทของประชาชน (กลยุทธ์ของ Strategy) { this.strategy = กลยุทธ์; } int สาธารณะ executeStrategy (int num1, num2 int) { กลับ strategy.doOperation (num1, num2); } }
ขั้นตอนที่ 4
ใช้ตามบริบทเพื่อดูเมื่อมีการเปลี่ยนแปลงกลยุทธ์ของการเปลี่ยนแปลงพฤติกรรม
StrategyPatternDemo.java
StrategyPatternDemo คลาสที่สาธารณะ { ประชาชนเป็นโมฆะคง main (String args []) { บริบทบริบท = บริบทใหม่ (ใหม่ OperationAdd ()); System.out.println ( "10 + 5 =" + context.executeStrategy (10, 5)); บริบท = บริบทใหม่ (OperationSubstract ใหม่ ()); System.out.println ( "10-5 =" + context.executeStrategy (10, 5)); บริบท = บริบทใหม่ (OperationMultiply ใหม่ ()); System.out.println ( "10 * 5 =" + context.executeStrategy (10, 5)); } }
ขั้นตอนที่ 5
ตรวจสอบการส่งออก
10 + 5 = 15 10--5 = 5 10 * 5 = 50