คำจำกัดความ: พฤติกรรมของชั้นเรียนหรืออัลกอริทึมสามารถเปลี่ยนแปลงได้เมื่อรันไทม์ ในโหมดนโยบายเราสร้างวัตถุที่แสดงถึงนโยบายต่าง ๆ และวัตถุบริบทที่มีการเปลี่ยนแปลงพฤติกรรมเมื่อวัตถุนโยบายเปลี่ยนแปลง วัตถุนโยบายเปลี่ยนอัลกอริทึมการดำเนินการของวัตถุบริบท
คุณสมบัติ:
1. อัลกอริทึมสามารถเปลี่ยนได้อย่างอิสระ
2. หลีกเลี่ยงการใช้หลายเงื่อนไขในการตัดสิน
3. ความสามารถในการปรับขนาดได้ดี
แอปพลิเคชันในการพัฒนาระดับองค์กรและกรอบงานทั่วไป: Java.servlet.http.httpservlet วิธีการบริการ
ตัวอย่าง: พฤติกรรมการทำงานของตัวเลขสองตัว
การสาธิตคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (String [] args) {กลยุทธ์กลยุทธ์ 1 = ใหม่ strategyadd (); กลยุทธ์กลยุทธ์ 2 = ใหม่ strategyDiv (); บริบทบริบท 1 = บริบทใหม่ (กลยุทธ์ 1); บริบท 1.execute (10, 5); บริบท 1 = บริบทใหม่ (กลยุทธ์ 2); บริบท 1.execute (10, 5); }} กลยุทธ์อินเตอร์เฟส {โมฆะสาธารณะ dooperation (int num1, int num2);} คลาสกลยุทธ์ใช้กลยุทธ์ {โมฆะสาธารณะ dooperation (int num1, int num2) {system.out.println ("ดำเนินการเพิ่มเติม"); System.out.println (num1+"+"+num2+"="+(num1+num2)); }} คลาส Strategysub ใช้กลยุทธ์ {โมฆะสาธารณะ dooperation (int num1, int num2) {system.out.println ("ดำเนินการลบ"); System.out.println (num1+"-"+num2+"="+(num1-num2)); }} คลาส StrategyMul ใช้กลยุทธ์ {โมฆะสาธารณะ dooperation (int num1, int num2) {system.out.println ("ดำเนินการคูณ"); System.out.println (num1+"*"+num2+"="+(num1*num2)); }} คลาส strategyDiv ใช้กลยุทธ์ {โมฆะสาธารณะ dooperation (int num1, int num2) {system.out.println ("Disction Division"); System.out.println (num1+"/"+num2+"="+(num1/num2)); }} บริบทคลาส {กลยุทธ์กลยุทธ์ส่วนตัว; บริบทสาธารณะ (กลยุทธ์กลยุทธ์) {this.strategy = กลยุทธ์; } โมฆะสาธารณะดำเนินการ (int num1, int num2) {strategy.dooperation (num1, num2); -รูปแบบนโยบายเน้นการเปลี่ยนแปลงรันไทม์ บางทีในรหัสข้างต้นการเปลี่ยนแปลงรันไทม์นี้ไม่ได้สะท้อนออกมาอย่างดี เราสามารถสันนิษฐานได้ว่าเป็นสถานการณ์จริงนั่นคือเมื่อพารามิเตอร์วัตถุถูกส่งผ่านไปยังวิธีการสมมติว่าเราต้องเลือกวิธีการที่แตกต่างกันตามพารามิเตอร์ที่แตกต่างกันเราจะพิจารณาว่าจะตัดสินในขณะที่โมเดลนโยบายจัดประเภท IF-else เหล่านี้ คลาสที่เฉพาะเจาะจงของพารามิเตอร์วัตถุอยู่ที่ JVM ตัดสิน เราไม่จำเป็นต้องเข้าใจประเภทแอตทริบิวต์พารามิเตอร์วัตถุ ฯลฯ สิ่งนี้ไม่เพียง แต่ทำให้งานพัฒนาของเราง่ายขึ้น แต่ยังมีความสามารถในการปรับขนาดได้ดีขึ้นเมื่อเทียบกับ IF-ELSE
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น