กลยุทธ์เป็นรูปแบบพฤติกรรมของวัตถุในรูปแบบการออกแบบ
Stratrgy ถูกใช้อย่างกว้างขวาง .
ที่นี่เราใช้การทดแทนสตริงเป็นตัวอย่าง อาจมีหลายวิธีในการแทนที่ตัวแปรในนั้นขึ้นอยู่กับข้อกำหนดของผู้ใช้ดังนั้นเราจึงต้องเตรียมตัวเลือกอักขระตัวแปรหลายชุด
ก่อนอื่นเราสร้างคลาสนามธรรม Reptemprule เพื่อกำหนดตัวแปรและวิธีการทั่วไปบางอย่าง:
การคัดลอกรหัสมีดังนี้:
บทคัดย่อระดับสาธารณะ reptemprule {
สตริงที่ได้รับการป้องกัน oldstring = "";
โมฆะสาธารณะ setOldString (สตริง oldstring) {
this.oldstring = oldstring;
-
สตริงที่ได้รับการป้องกัน NewString = "";
สตริงสาธารณะ getNewString () {
return newstring;
-
นามธรรมนามธรรมสาธารณะแทนที่ () โยนข้อยกเว้น;
-
มีวิธีนามธรรมนามธรรมใน reptemprule ที่ต้องได้รับการสืบทอดอย่างชัดเจนและการแทนที่นี้เป็นวิธีเฉพาะที่แทนที่
ตอนนี้เรามีตัวละครสองตัวเลือก:
1. แทนที่ AAA ในข้อความด้วย BBB;
2. แทนที่ AAA ในข้อความด้วย CCC
คลาสที่เกี่ยวข้องคือ reptempruleone และ reptempuletwo:
การคัดลอกรหัสมีดังนี้:
ชั้นเรียนสาธารณะ reptempruleone ขยาย reptemprule {
โมฆะสาธารณะแทนที่ () โยนข้อยกเว้น {
// ReplactFirst เป็นคุณสมบัติใหม่ของ JDK1.4 NewsTring = OldString.replaceFirst ("AAA", "BBBB")
System.out.println ("นี่คือแทนที่หนึ่ง");
-
-
การคัดลอกรหัสมีดังนี้:
ชั้นเรียนสาธารณะ reptempuletwo ขยาย reptemprule {
โมฆะสาธารณะแทนที่ () โยนข้อยกเว้น {
NewString = oldString.replacefirst ("AAA", "CCC")
System.out.println ("นี่คือแทนที่สอง");
-
-
ขั้นตอนที่ 2: เราจำเป็นต้องสร้างคลาสโซลูชันอัลกอริทึมเพื่อให้ลูกค้าสามารถเลือกอัลกอริทึมได้อย่างอิสระ
การคัดลอกรหัสมีดังนี้:
ชั้นเรียนสาธารณะ reptemprulesolve {
กลยุทธ์ Reptemprule ส่วนตัว
สาธารณะ reptemprulesolve (กฎ reptemprule) {
this.strategy = กฎ;
-
สตริงสาธารณะ getNewContext (ไซต์ไซต์สตริง oldstring) {
return Strategy.Replace (เว็บไซต์, Oldstring);
-
โมฆะสาธารณะ Changealgorithm (reptemprule newalgorithm) {
กลยุทธ์ = newalgorithm;
-
-
การโทรมีดังนี้:
การคัดลอกรหัสมีดังนี้:
การทดสอบระดับสาธารณะ {
-
Public Void Testreplace () {
// ใช้ชุดแรกของทางเลือก reptemprulesolve solver = ใหม่ reptemprulesolve (ใหม่ reptemprulesimple ());
solver.getNewContext (เว็บไซต์บริบท);
// ใช้ชุดที่สองของตัวแก้ = ใหม่ reptemprulesolve (ใหม่ reptempuletwo ());
solver.getNewContext (เว็บไซต์บริบท);
-
-
-
เราบรรลุเป้าหมายของการสลับอัลกอริทึมอย่างอิสระในระหว่างการดำเนินการ
ในความเป็นจริงส่วนหลักของกลยุทธ์ทั้งหมดคือการใช้คลาสนามธรรม
กลยุทธ์และโรงงานมีความคล้ายคลึงกัน โรงงานมุ่งเน้นไปที่การสร้างวัตถุ
กลยุทธ์เหมาะสำหรับโอกาสต่อไปนี้:
1. บันทึกไฟล์ในรูปแบบที่แตกต่างกัน
2. บีบอัดไฟล์ด้วยอัลกอริทึมที่แตกต่างกัน
3. ภาพสกัดกั้นด้วยอัลกอริทึมที่แตกต่างกัน
4. กราฟเอาต์พุตของข้อมูลเดียวกันในรูปแบบที่แตกต่างกันเช่นเส้นโค้งหรือแถบแผนภาพบล็อก