บทความนี้อธิบายถึงคำจำกัดความและการใช้รูปแบบนโยบาย Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
1. คำจำกัดความ:
กำหนดชุดของอัลกอริทึมห่อหุ้มพวกเขาทีละตัวและเปิดใช้งานพวกเขาจะถูกแทนที่ด้วยกัน
2. ข้อดี:
(1) บริบทและกลยุทธ์เฉพาะมีการเชื่อมโยงกันอย่างหลวม ๆ ดังนั้นบริบทจะต้องรู้เพียงว่าอินสแตนซ์ใดที่ต้องการใช้ในการใช้คลาสอินเตอร์เฟสกลยุทธ์ แต่ไม่จำเป็นต้องรู้ว่าคลาสใด
(2) รูปแบบนโยบายตรงตามหลักการเปิดและปิด เมื่อเพิ่มคลาสเฉพาะใหม่ไม่จำเป็นต้องแก้ไขรหัสของคลาสบริบท บริบทสามารถอ้างถึงอินสแตนซ์ของนโยบายเฉพาะใหม่
iii. ตัวอย่าง:
ต่อไปนี้เป็นคำอธิบายโดยละเอียดของแบบจำลองกลยุทธ์ผ่านคำถาม
ข้อกำหนดการทดลอง:
Xiao Ding เป็นโปรแกรมเมอร์ในอาลีบาบา วันนี้ผู้จัดการโครงการให้คำจำกัดความในชั้นเรียนแก่เขา
คนงานชั้นเรียนสาธารณะ {int id; ชื่อสตริง; อายุ int;}Xiao Ding เห็นว่านี่ไม่ใช่คำจำกัดความของคนงานรวมถึงหมายเลขหมายเลข, ชื่อ, อายุ, ฯลฯ
ผู้จัดการกล่าวว่าฉันต้องการให้คุณเขียนฟังก์ชั่นที่สามารถค้นหาสิ่งที่เก่าแก่ที่สุดในกลุ่มคนงาน การประกาศวิธีการคือ (หรืออะไรทำนองนี้):
Worker Searchworker (รายการ <Worker> คนงาน);
List<Worker> workers เป็นข้อมูลของกลุ่มคนงานนี้ หากพบคนงานที่เก่าแก่ที่สุดวัตถุคนงานจะถูกส่งคืน หากคนงานไม่มีโหนดให้ส่งคืนค่า null
คำตอบ:
1. กลยุทธ์
ในโหมดนโยบายอินเทอร์เฟซนี้มีชื่อว่า WordStrategy (ในคำถามเฉพาะชื่อนี้สามารถตั้งชื่อตามคำถามเฉพาะ) และรหัสมีดังนี้:
wordstrategy.java
นำเข้า java.util.list; อินเทอร์เฟซสาธารณะ wordstrategy {ผู้ปฏิบัติงานสาธารณะ ageaverage (รายการ <Lyer> รายการ);}2. บริบท
นโยบายเชิงบริบทเป็นทั้งคลาสที่เน้นอินเทอร์เฟซ รหัสมีดังนี้:
maxage.java
นำเข้า java.util.list; Maxage ระดับสาธารณะ {wordstrategy worksstrategy; โมฆะสาธารณะ setWorkStrategy (worksstrategy worksstrategy) {this.workstrategy = worksstrategy; } คนงานสาธารณะ getFindMax (รายการ <Worker> รายการ) {ถ้า (worksTrategy! = null) ส่งคืน worksTrategy.ageaverage (รายการ); อื่น {return null; -3. กลยุทธ์เฉพาะ
กลยุทธ์ที่เฉพาะเจาะจงคือการใช้คลาสอินเทอร์เฟซ WordStrategy นั่นคือผู้ปฏิบัติงานนามธรรมในอินเทอร์เฟซจะต้องเขียนใหม่
AGEARAGE (รายการ <Lyer> รายการ) วิธีการ
รหัสมีดังนี้:
StrategyMaxage.java
นำเข้า java.util.list; กลยุทธ์ระดับสาธารณะ Maxage ใช้ WORKSTRATEGY {@Override ผู้ปฏิบัติงานสาธารณะ Ageaverage (รายการ <Worker> รายการ) {int fs [] = new int [list.size ()]; int maxage = 0; สำหรับ (int j = 0; j <list.size (); j ++) {fs [j] = list.get (j) .getage (); if (fs [maxage] <= fs [j]) {maxage = j; }} return list.get (maxage); -4. การใช้โหมดนโยบาย
Application.java
นำเข้า java.util.arraylist; นำเข้า java.util.list; แอปพลิเคชันคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {รายการ <Worker> list = new ArrayList <> (); list.add (คนงานใหม่ (1, "จางซาน", 30)); list.add (คนงานใหม่ (2, "Li Si", 40)); list.add (คนงานใหม่ (3, "Wang Wu", 33)); maxage findage = new maxage (); fink.setworkstrategy (strategymaxage ใหม่ ()); Worker findw = finamage.getFindMax (รายการ); System.out.println ("ผลการทดสอบ wulin.com:"); System.out.println ("คนงานที่เก่าแก่ที่สุด:"+findw.getId ()+""+findw.getName ()+""+findw.getage ()); }} คนงานในชั้นเรียน {int id; ชื่อสตริง; อายุ int; สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; } คนงานสาธารณะ (ID int, ชื่อสตริง, อายุ int) {super (); this.id = id; this.name = ชื่อ; this.age = อายุ; } คนงานสาธารณะ () {super (); // todo stub stub stub}}}}5. ผลการดำเนินงาน:
สำหรับเนื้อหาที่เกี่ยวข้องกับ Java เพิ่มเติมผู้อ่านที่สนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินการ Java Dom Node", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน