บทความนี้อธิบายฟังก์ชั่นการสลับโหมดการแก้ไขเอกสารที่ใช้โดย Java ตามโหมดสถานะ แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
คำจำกัดความรูปแบบ
โหมดสถานะ: เมื่อสถานะภายในของวัตถุเปลี่ยนแปลงไปจะช่วยให้การเปลี่ยนแปลงพฤติกรรมของมันและวัตถุดูเหมือนว่ามันจะเปลี่ยนคลาสแล้ว
ตัวอย่างของโหมดที่สอง
1 การวิเคราะห์รูปแบบ
เราใช้กรณีของโหมดการแก้ไขเอกสารเพื่อสลับเพื่อแสดงโหมดนี้
2 โหมดสแตติกไดอะแกรมคลาสสแตติก
3 ตัวอย่างรหัส
3.1 สร้าง ITENTORMATION-ITATE
แพ็คเกจ com.demo.state; นำเข้า com.demo.context.context;/** * * อินเทอร์เฟซสถานะ * * @author * */อินเตอร์เฟสสาธารณะ istate {/** * การเปลี่ยนสถานะ * * @param บริบท * @param โหมด */โมฆะสาธารณะ convertstate (บริบทบริบท, โหมด int); / ** * บันทึกวิธี * * @param บริบท */ โมฆะสาธารณะบันทึก (บริบทบริบท); / ** * แก้ไขวิธี * * @param บริบท */ โมฆะสาธารณะแก้ไข (บริบทบริบท); / ** * วิธีใหม่ * * @param บริบท */ โมฆะสาธารณะเพิ่ม (บริบทบริบท); / ** * ดูวิธีการ * * @param บริบท */ มุมมองโมฆะสาธารณะ (บริบทบริบท);}3.2 สร้างบริบทบริบท
แพ็คเกจ com.demo.context; นำเข้า com.demo.state.istate;/** * สภาพแวดล้อมบริบท * * @author * */บริบทคลาสสาธารณะ {// preview mode public public final int preview_mode = 0; // แก้ไขโหมดสาธารณะคงที่ขั้นสุดท้าย int edit_mode = 1; // รัฐ Istate ส่วนตัวของรัฐปัจจุบัน; // เปลี่ยนโมฆะสาธารณะสถานะการเปลี่ยนแปลง (สถานะ istate) {this.state = state; } / ** * เรียกใช้ * @Param Mode * / Public Void Dowork (โหมด int) {System.out.println ("-----------------------------"); this.state.convertState (โหมดนี้); this.state.add (นี่); this.state.save (นี่); this.state.modify (นี่); this.state.view (นี่); System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3.3 แก้ไขสถานะ 1 แก้ไข
แพ็คเกจ com.demo.state; นำเข้า com.demo.context.context;/*** แก้ไขสถานะโหมด** @author**/คลาสสาธารณะ editstate ใช้ istate {/*** การเปลี่ยนแปลงสถานะ*/โมฆะสาธารณะ Convertate (บริบทใหม่) }} / *** ใหม่ในโหมดแก้ไข* / โมฆะสาธารณะเพิ่ม (บริบทบริบท) {System.out.println ("แก้ไขโหมด [เพิ่ม] ... "); } / *** แก้ไขโหมดการปรับเปลี่ยน* / โมฆะสาธารณะแก้ไข (บริบทบริบท) {System.out.println ("แก้ไขโหมด [แก้ไข] ... "); } / *** แก้ไขโหมดการบันทึก* / โมฆะสาธารณะบันทึก (บริบทบริบท) {system.out.println ("แก้ไขโหมด [บันทึก] ... "); } / *** แก้ไขโหมดดู* / มุมมองโมฆะสาธารณะ (บริบทบริบท) {System.out.println ("แก้ไขโหมด [ดู] ... "); -3.4 PreviewState
แพ็คเกจ com.demo.state; นำเข้า com.demo.context.context;/*** สถานะโหมดตัวอย่างสถานะ** @author**/คลาสสาธารณะ PreviewState ดำเนินการ istate {/*** การเปลี่ยนแปลงสถานะ*/โมฆะสาธารณะ Converstate (บริบทใหม่) }} / *** ใหม่ในโหมดดูตัวอย่าง* / โมฆะสาธารณะเพิ่ม (บริบทบริบท) {System.out.println ("โหมดดูตัวอย่างไม่รองรับฟังก์ชั่น [ใหม่]!"); } / *** การแก้ไขโหมดดูตัวอย่าง* / โมฆะสาธารณะแก้ไข (บริบทบริบท) {System.out.println ("โหมดดูตัวอย่างไม่รองรับฟังก์ชั่น [แก้ไข]!"); } / *** การบันทึกโหมดตัวอย่างการบันทึก* / โมฆะสาธารณะบันทึก (บริบทบริบท) {System.out.println ("โหมดดูตัวอย่างไม่รองรับฟังก์ชั่น [บันทึก]!"); } / *** ดูโหมดดูตัวอย่าง* / มุมมองโมฆะสาธารณะ (บริบทบริบท) {System.out.println ("โหมดดูตัวอย่าง [ดู] ... "); -3.5 ไคลเอนต์การทดสอบไคลเอนต์
แพ็คเกจ com.demo; นำเข้า java.util.random; นำเข้า com.demo.context.context; นำเข้า com.demo.state.editState;/** * แอปพลิเคชันไคลเอนต์ * * @author */ไคลเอนต์คลาสสาธารณะ {/** * @param args Context.changestate (ใหม่ editstate ()); สุ่มสุ่ม = ใหม่สุ่ม (); สำหรับ (int i = 0; i <5; i ++) {int r = random.nextint (2); System.out.println ("โหมดปัจจุบัน:" + (r == 0? "โหมดดูตัวอย่าง": (r == 1? "แก้ไขโหมด": ""))); Context.dowork (R); -4 ผลการทำงาน
โหมดปัจจุบัน: แก้ไขโหมด
-
โหมดแก้ไข [ใหม่] ...
แก้ไขโหมด [บันทึก] ...
โหมดแก้ไข [แก้ไข] ...
แก้ไขโหมด [ดู] ...
-
โหมดปัจจุบัน: แก้ไขโหมด
-
โหมดแก้ไข [ใหม่] ...
แก้ไขโหมด [บันทึก] ...
โหมดแก้ไข [แก้ไข] ...
แก้ไขโหมด [ดู] ...
-
โหมดปัจจุบัน: โหมดดูตัวอย่าง
-
โหมดตัวอย่างไม่รองรับฟังก์ชั่น [ใหม่]!
โหมดตัวอย่างไม่รองรับฟังก์ชั่น [บันทึก]!
โหมดตัวอย่างไม่รองรับฟังก์ชั่น [แก้ไข]!
โหมดตัวอย่าง [ดู] ...
-
โหมดปัจจุบัน: โหมดดูตัวอย่าง
-
โหมดตัวอย่างไม่รองรับฟังก์ชั่น [ใหม่]!
โหมดตัวอย่างไม่รองรับฟังก์ชั่น [บันทึก]!
โหมดตัวอย่างไม่รองรับฟังก์ชั่น [แก้ไข]!
โหมดตัวอย่าง [ดู] ...
-
โหมดปัจจุบัน: แก้ไขโหมด
-
โหมดแก้ไข [ใหม่] ...
แก้ไขโหมด [บันทึก] ...
โหมดแก้ไข [แก้ไข] ...
แก้ไขโหมด [ดู] ...
-
สามหลักการของการออกแบบรูปแบบนี้
หลักการ 1 "Open-Close"
2 หลักการความรับผิดชอบเดี่ยว
สี่ครั้งการใช้งาน
1 พฤติกรรมของวัตถุถูกนำมาจากสถานะของมันและจะต้องเปลี่ยนพฤติกรรมตามสถานะของมันในขณะที่การดำเนินงาน
2 การดำเนินการมีโครงสร้างหลายสาขาขนาดใหญ่และสาขาเหล่านี้จะถูกกำหนดโดยสถานะของวัตถุ
แผนภาพคลาสคงที่ระดับห้ารัฐ
สำหรับเนื้อหาที่เกี่ยวข้องกับ Java ผู้อ่านที่สนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "บทนำและการสอนขั้นสูงเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ Java", "การสอนเกี่ยวกับโครงสร้างข้อมูล Java และอัลกอริทึม" สรุปการดำเนินงานของ Java
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน