บทช่วยสอน รูปแบบของที่ระลึก ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ การแนะนำ,การสำนึก,

รูปแบบของที่ระลึก

โหมดการบันทึก (แบบ Memento) เพื่อบันทึกสถานะของวัตถุเพื่อเรียกคืนวัตถุในเวลาที่เหมาะสม รูปแบบการบันทึกข้อตกลงเป็นรูปแบบพฤติกรรม

การแนะนำ

เจตนา: โดยไม่ละเมิด encapsulation จับรัฐภายในของวัตถุและบันทึกสถานะที่อยู่ด้านนอกของวัตถุ

เป็นหลักในการแก้ปัญหา: รูปแบบเป็นบันทึกข้อตกลงที่เรียกว่าโดยไม่ทำลายแพคเกจจับรัฐภายในของวัตถุและบันทึกรัฐนอกของวัตถุเพื่อให้วัตถุที่สามารถต่อมาถูกเรียกคืนไปยังรัฐที่บันทึกไว้ก่อนหน้า

เมื่อใช้: หลายครั้งที่เรามักจะต้องบันทึกรัฐภายในของวัตถุวัตถุประสงค์ของการทำเช่นนั้นคือการให้ผู้ใช้สามารถยกเลิกการดำเนินการมีความไม่แน่นอนหรือไม่ถูกต้องสามารถเรียกคืนสู่สภาพเดิมของเขาเพื่อให้เขาได้ "เสียใจ" ที่จะกิน

วิธีการแก้ไข: บันทึกโดยชั้นที่ออกแบบมาเพื่อเก็บสถานะของวัตถุ

รหัสสำคัญ: ลูกค้าไม่ได้คู่กับชั้นบันทึกควบคู่กับการจัดการเรียนการบันทึก

ตัวอย่างการใช้งาน: 1, เสียใจในภายหลัง2 เมื่อเล่นเกมที่เก็บ 3 CTRI ของ Windows เลน + Z 4, IE ในด้านหลัง 4, การจัดการฐานข้อมูลการทำธุรกรรม

ข้อดี: 1 เพื่อให้ผู้ใช้มีวิธีการที่จะเรียกคืนสถานะของกลไกที่ช่วยให้ผู้ใช้มีความสะดวกมากขึ้นในการกลับไปที่ประวัติศาสตร์ของรัฐที่2 เพื่อให้บรรลุแพคเกจของข้อมูลเพื่อให้ผู้ใช้ไม่จำเป็นต้องกังวลเกี่ยวกับสถานะของการเก็บรักษารายละเอียดที่

ข้อเสีย: ใช้ทรัพยากรถ้าตัวแปรสมาชิกของชั้นเกินไปถูกผูกไว้ที่จะใช้ทรัพยากรที่ค่อนข้างใหญ่และแต่ละครั้งที่คุณบันทึกจะใช้จำนวนหนึ่งของหน่วยความจำ

สถานการณ์การใช้งาน: 1, จำเป็นที่จะต้องบันทึก / เรียกคืนรัฐที่เกี่ยวข้องของข้อมูลที่เกิดเหตุ2 มีการดำเนินงานที่มีให้ย้อนกลับ

หมายเหตุ: 1, เพื่อตอบสนองหลักการของ Demeter, นอกจากนี้ยังเพิ่มการบันทึกการจัดการชั้นเรียน2 เพื่อที่จะบันทึกความทรงจำคุณสามารถใช้แบบจำลองต้นแบบโหมด + บันทึก

การสำนึก

โหมดบันทึกใช้สามชั้นของที่ระลึก,ผู้เริ่มต้นและผู้ดูแล ของที่ระลึกที่มีวัตถุที่จะบูรณะในรัฐ เริ่มต้นที่ระลึกวัตถุจะถูกสร้างขึ้นและเก็บไว้ในรัฐ ภารโรงวัตถุเป็นผู้รับผิดชอบสำหรับการเรียกคืนวัตถุจากรัฐที่ระลึก

MementoPatternDemo เรียนสาธิตของเราโดยใช้ผู้ดูแลและผู้เริ่มต้นวัตถุเพื่อแสดงสถานะของการกู้คืนวัตถุ

รูปแบบการบันทึกข้อตกลงแผนภาพ UML

ขั้นตอนที่ 1

สร้างคลาสที่ระลึก

Memento.java

คลาสที่สาธารณะที่ระลึก {
   รัฐ String เอกชน

   Memento สาธารณะ (รัฐ String) {
      this.state = รัฐ
   }

   String สาธารณะ getState () {
      กลับรัฐ
   }	
}

ขั้นตอนที่ 2

สร้างชั้นต้น

Originator.java

เริ่มต้นเรียนสาธารณะ {
   รัฐ String เอกชน

   โมฆะสาธารณะ setState (รัฐ String) {
      this.state = รัฐ
   }

   String สาธารณะ getState () {
      กลับรัฐ
   }

   ประชาชนที่ระลึก saveStateToMemento () {
      กลับมาที่ระลึกใหม่ (รัฐ);
   }

   โมฆะสาธารณะ getStateFromMemento (Memento Memento) {
      รัฐ = Memento.getState ();
   }
}

ขั้นตอนที่ 3

สร้างชั้นดูแล

CareTaker.java

นำเข้า java.util.ArrayList;
นำเข้า java.util.List;

ผู้ดูแลระดับสาธารณะ {
   รายการส่วนตัว <ระลึก> mementoList ใหม่ = ArrayList <ระลึก> ();

   โมฆะสาธารณะเพิ่ม (รัฐ Memento) {
      mementoList.add (รัฐ);
   }

   ของที่ระลึกของประชาชนได้รับ (ดัชนี int) {
      กลับ mementoList.get (ดัชนี);
   }
}

ขั้นตอนที่ 4

ใช้ทำความสะอาดและเริ่มต้นวัตถุ

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 ());
   }
}

ขั้นตอนที่ 5

ตรวจสอบการส่งออก

สถานะปัจจุบัน: รัฐ # 4
สถานะที่บันทึกไว้ครั้งแรก: รัฐ # 2
สถานะที่บันทึกไว้ประการที่สอง: รัฐ # 3
รูปแบบของที่ระลึก
10/30