บทช่วยสอน รูปแบบของที่ระลึก ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ การแนะนำ,การสำนึก,
โหมดการบันทึก (แบบ Memento) เพื่อบันทึกสถานะของวัตถุเพื่อเรียกคืนวัตถุในเวลาที่เหมาะสม รูปแบบการบันทึกข้อตกลงเป็นรูปแบบพฤติกรรม
เจตนา: โดยไม่ละเมิด encapsulation จับรัฐภายในของวัตถุและบันทึกสถานะที่อยู่ด้านนอกของวัตถุ
เป็นหลักในการแก้ปัญหา: รูปแบบเป็นบันทึกข้อตกลงที่เรียกว่าโดยไม่ทำลายแพคเกจจับรัฐภายในของวัตถุและบันทึกรัฐนอกของวัตถุเพื่อให้วัตถุที่สามารถต่อมาถูกเรียกคืนไปยังรัฐที่บันทึกไว้ก่อนหน้า
เมื่อใช้: หลายครั้งที่เรามักจะต้องบันทึกรัฐภายในของวัตถุวัตถุประสงค์ของการทำเช่นนั้นคือการให้ผู้ใช้สามารถยกเลิกการดำเนินการมีความไม่แน่นอนหรือไม่ถูกต้องสามารถเรียกคืนสู่สภาพเดิมของเขาเพื่อให้เขาได้ "เสียใจ" ที่จะกิน
วิธีการแก้ไข: บันทึกโดยชั้นที่ออกแบบมาเพื่อเก็บสถานะของวัตถุ
รหัสสำคัญ: ลูกค้าไม่ได้คู่กับชั้นบันทึกควบคู่กับการจัดการเรียนการบันทึก
ตัวอย่างการใช้งาน: 1, เสียใจในภายหลัง2 เมื่อเล่นเกมที่เก็บ 3 CTRI ของ Windows เลน + Z 4, IE ในด้านหลัง 4, การจัดการฐานข้อมูลการทำธุรกรรม
ข้อดี: 1 เพื่อให้ผู้ใช้มีวิธีการที่จะเรียกคืนสถานะของกลไกที่ช่วยให้ผู้ใช้มีความสะดวกมากขึ้นในการกลับไปที่ประวัติศาสตร์ของรัฐที่2 เพื่อให้บรรลุแพคเกจของข้อมูลเพื่อให้ผู้ใช้ไม่จำเป็นต้องกังวลเกี่ยวกับสถานะของการเก็บรักษารายละเอียดที่
ข้อเสีย: ใช้ทรัพยากรถ้าตัวแปรสมาชิกของชั้นเกินไปถูกผูกไว้ที่จะใช้ทรัพยากรที่ค่อนข้างใหญ่และแต่ละครั้งที่คุณบันทึกจะใช้จำนวนหนึ่งของหน่วยความจำ
สถานการณ์การใช้งาน: 1, จำเป็นที่จะต้องบันทึก / เรียกคืนรัฐที่เกี่ยวข้องของข้อมูลที่เกิดเหตุ2 มีการดำเนินงานที่มีให้ย้อนกลับ
หมายเหตุ: 1, เพื่อตอบสนองหลักการของ Demeter, นอกจากนี้ยังเพิ่มการบันทึกการจัดการชั้นเรียน2 เพื่อที่จะบันทึกความทรงจำคุณสามารถใช้แบบจำลองต้นแบบโหมด + บันทึก
โหมดบันทึกใช้สามชั้นของที่ระลึก,ผู้เริ่มต้นและผู้ดูแล ของที่ระลึกที่มีวัตถุที่จะบูรณะในรัฐ เริ่มต้นที่ระลึกวัตถุจะถูกสร้างขึ้นและเก็บไว้ในรัฐ ภารโรงวัตถุเป็นผู้รับผิดชอบสำหรับการเรียกคืนวัตถุจากรัฐที่ระลึก
MementoPatternDemo เรียนสาธิตของเราโดยใช้ผู้ดูแลและผู้เริ่มต้นวัตถุเพื่อแสดงสถานะของการกู้คืนวัตถุ
สร้างคลาสที่ระลึก
Memento.java
คลาสที่สาธารณะที่ระลึก { รัฐ String เอกชน Memento สาธารณะ (รัฐ String) { this.state = รัฐ } String สาธารณะ getState () { กลับรัฐ } }
สร้างชั้นต้น
Originator.java
เริ่มต้นเรียนสาธารณะ { รัฐ String เอกชน โมฆะสาธารณะ setState (รัฐ String) { this.state = รัฐ } String สาธารณะ getState () { กลับรัฐ } ประชาชนที่ระลึก saveStateToMemento () { กลับมาที่ระลึกใหม่ (รัฐ); } โมฆะสาธารณะ getStateFromMemento (Memento Memento) { รัฐ = Memento.getState (); } }
สร้างชั้นดูแล
CareTaker.java
นำเข้า java.util.ArrayList; นำเข้า java.util.List; ผู้ดูแลระดับสาธารณะ { รายการส่วนตัว <ระลึก> mementoList ใหม่ = ArrayList <ระลึก> (); โมฆะสาธารณะเพิ่ม (รัฐ Memento) { mementoList.add (รัฐ); } ของที่ระลึกของประชาชนได้รับ (ดัชนี int) { กลับ mementoList.get (ดัชนี); } }
ใช้ทำความสะอาดและเริ่มต้นวัตถุ
MementoPatternDemo.java
MementoPatternDemo คลาสที่สาธารณะ { ประชาชนเป็นโมฆะคง main (String args []) { เริ่มต้นริเริ่ม = เริ่มต้นใหม่ (); ดูแลทำความสะอาดดูแล = ใหม่ (); originator.setState ( "# รัฐที่ 1"); originator.setState ( "รัฐ # 2"); careTaker.add (originator.saveStateToMemento ()); originator.setState ( "รัฐ # 3"); careTaker.add (originator.saveStateToMemento ()); originator.setState ( "รัฐ # 4"); System.out.println ( "รัฐปัจจุบัน:" + originator.getState ()); originator.getStateFromMemento (careTaker.get (0)); System.out.println ( "ครั้งแรกที่บันทึกไว้รัฐ:" + originator.getState ()); originator.getStateFromMemento (careTaker.get (1)); System.out.println ( "สองบันทึกรัฐ:" + originator.getState ()); } }
ตรวจสอบการส่งออก
สถานะปัจจุบัน: รัฐ # 4 สถานะที่บันทึกไว้ครั้งแรก: รัฐ # 2 สถานะที่บันทึกไว้ประการที่สอง: รัฐ # 3