รูปแบบของรัฐ
ในโหมดรัฐ (แบบรัฐ) พฤติกรรมของชั้นจะขึ้นอยู่กับสถานะของการเปลี่ยนแปลง ประเภทของรูปแบบการออกแบบนี้เป็นรูปแบบพฤติกรรม
ในรูปแบบของรัฐที่เราสร้างวัตถุและความหลากหลายของรัฐพฤติกรรมพร้อมกับสถานะของการเป็นตัวแทนบริบทการเปลี่ยนแปลงวัตถุวัตถุเปลี่ยนแปลง
การแนะนำ
เจตนา: ช่วยให้วัตถุที่จะเปลี่ยนพฤติกรรมในรัฐภายในมีการเปลี่ยนแปลงวัตถุที่ปรากฏในการปรับเปลี่ยนระดับนี้
ส่วนใหญ่จะแก้พฤติกรรมของวัตถุขึ้นอยู่กับรัฐ (คุณลักษณะ) ของตนและคุณสามารถเปลี่ยนได้ตามรัฐที่เกี่ยวข้องกับการเปลี่ยนแปลงพฤติกรรมของมัน
เมื่อจะใช้: รหัสที่มีจำนวนมากของวัตถุที่เกี่ยวข้องกับสถานะของงบเงื่อนไข
วิธีการแก้ไข: สถานะของการเรียนเฉพาะนามธรรมออก
รหัสสำคัญ: คำสั่งอินเตอร์เฟซโหมดมักจะมีเพียงวิธีการหนึ่งสถานะของอินเตอร์เฟซที่มีหนึ่งหรือมากกว่าหนึ่งวิธี นอกจากนี้วิธีการของรัฐระดับโหมดการใช้งานมักจะส่งคืนค่าหรือเปลี่ยนค่าของตัวแปรอินสแตนซ์ นั่นคือรัฐและรัฐของรูปแบบวัตถุที่มีความเกี่ยวข้องโดยทั่วไป วิธีการเรียนการดำเนินงานมีหน้าที่แตกต่างวิธีการอินเตอร์เฟซที่ครอบคลุม โหมดรัฐและโหมดคำสั่งเดียวกันนอกจากนี้ยังสามารถใช้ในการกำจัดเงื่อนไขอื่น ๆ ถ้า ... คำสั่งตัวเลือกอื่น
ตัวอย่างการใช้งาน: 1, เล่นบาสเกตบอลเล่นสามารถมีสภาพปกติไม่สภาวะปกติและสภาวะผิดปกติ2 มาร์ควิสยี่ของระฆัง Zeng ที่ 'นาฬิกาเป็นอินเตอร์เฟซที่เป็นนามธรรม', 'นาฬิกา' และรัฐอื่น ๆ เฉพาะสภาพแวดล้อมเฉพาะ 'Bianzhong (Context)
ข้อดี: 1, ความสุนทรีย์กฎการเปลี่ยนแปลง2 ระบุรัฐเป็นไปได้ก่อนที่รัฐแจงนับต้องมีการตรวจสอบสถานะของสายพันธุ์ 3 ทั้งหมดที่มีลักษณะการทำงานของรัฐที่เกี่ยวข้องกับการเข้าชั้นเรียนและคุณสามารถเพิ่มรัฐใหม่จะต้องเปลี่ยนสถานะของวัตถุสามารถเปลี่ยนพฤติกรรมของวัตถุ 4 ช่วยให้รัฐรัฐตรรกะการเปลี่ยนแปลงของวัตถุในหนึ่งมากกว่าหนึ่งช่วงตึกใหญ่ของงบเงื่อนไข 5 ช่วยให้วัตถุหลายแบ่งปันสภาพแวดล้อมวัตถุรัฐซึ่งจะช่วยลดจำนวนของวัตถุในระบบ
ข้อเสีย: 1, รูปแบบของรัฐในการใช้ที่ถูกผูกไว้ที่จะเพิ่มจำนวนของชั้นเรียนของระบบและวัตถุ2 โครงสร้างและรูปแบบการดำเนินงานของรัฐที่มีความซับซ้อนมากขึ้นถ้าใช้ไม่ถูกต้องอาจทำให้เกิดโครงสร้างโปรแกรมสับสนและรหัส 3, การสนับสนุนสำหรับรัฐรูปแบบ "เปิดปิดหลักการ" ไม่ได้เป็นสิ่งที่ดีมากที่คุณสามารถเปลี่ยนสถานะของรูปแบบรัฐเพิ่มคลาสใหม่จำเป็นต้องปรับเปลี่ยนสถานะของผู้ที่รับผิดชอบในการเปลี่ยนสถานะของรหัสที่มาหรือไม่สามารถสลับไปยังรัฐใหม่และปรับเปลี่ยน ชั้นการกระทำของรัฐยังจำเป็นต้องปรับเปลี่ยนรหัสแหล่งที่มาของระดับที่สอดคล้องกัน
สถานการณ์การใช้งาน: 1 กับพฤติกรรมที่เปลี่ยนสถานะและการเปลี่ยนแปลงของฉาก2 สาขาเงื่อนไขคำสั่งแทน
หมายเหตุ: เมื่อใช้พฤติกรรมรัฐ จำกัด โดยโหมดของรัฐและรัฐจะไม่เกินห้า
การสำนึก
เราจะสร้างอินเตอร์เฟซสถานะนิติบุคคลและการดำเนินการของรัฐอินเตอร์เฟซชั้นเรียนบริบทเป็นชั้นที่มีรัฐบางอย่าง
StatePatternDemo เราแสดงให้เห็นถึงการใช้งานของการเรียนและสถานะบริบทบริบทวัตถุที่จะแสดงให้เห็นถึงการเปลี่ยนแปลงพฤติกรรมในสถานะของการเปลี่ยนแปลง
ขั้นตอนที่ 1
สร้างอินเตอร์เฟซ
State.java
public interface State { public void doAction(Context context); }
ขั้นตอนที่ 2
สร้างคลาสนิติบุคคลที่ใช้อินเตอร์เฟซ
StartState.java
เรียนสาธารณะ StartState ดำเนิน {รัฐ โมฆะสาธารณะ doAction (บริบทบริบท) { System.out.println ( "ผู้เล่นอยู่ในสถานะเริ่มต้น"); context.setState (นี้); } สาธารณะ String toString () { กลับ "Start รัฐ"; } }
StopState.java
public class StopState implements State { public void doAction(Context context) { System.out.println("Player is in stop state"); context.setState(this); } public String toString(){ return "Stop State"; } }
ขั้นตอนที่ 3
สร้างคลาสบริบท
Context.java
บริบทระดับสาธารณะ { รัฐรัฐเอกชน บริบทสาธารณะ () { รัฐ = null; } โมฆะสาธารณะ setState (รัฐรัฐ) { this.state = รัฐ } สาธารณะรัฐ getState () { กลับรัฐ } }
ขั้นตอนที่ 4
ใช้ตามบริบทเพื่อดูพฤติกรรมเมื่อรัฐมีการเปลี่ยนแปลงการเปลี่ยนแปลงสถานะ
StatePatternDemo.java
เรียนสาธารณะ StatePatternDemo { ประชาชนเป็นโมฆะคง main (String args []) { บริบทบริบท = บริบทใหม่ (); StartState startState = ใหม่ StartState (); startState.doAction (บริบท); System.out.println (context.getState () toString ().); StopState stopState = StopState ใหม่ (); stopState.doAction (บริบท); System.out.println (context.getState () toString ().); } }
ขั้นตอนที่ 5
ตรวจสอบการส่งออก
ผู้เล่นที่อยู่ในสถานะเริ่มต้น รัฐเริ่มต้น ผู้เล่นที่อยู่ในสถานะหยุด รัฐหยุด