Latest web development tutorials

تذكار نمط

وضع مذكرة (تذكار نمط) لانقاذ الدولة من كائن من أجل استعادة الكائن في الوقت المناسب. أنماط مذكرة تنتمي الأنماط السلوكية.

مقدمة

القصد: مع عدم الإخلال التغليف من الاستيلاء على الحالة الداخلية للكائن، وانقاذ الدولة خارج الكائن.

أساسا لحل: هذا النموذج هو ما يسمى مذكرة دون تدمير الحزمة، التقاط الحالة الداخلية للكائن، وحفظ للدولة خارج الكائن بحيث يمكن فيما بعد استعادة الكائن إلى دولة المحفوظة.

متى تستخدم: مرات عديدة ونحن بحاجة دائما لتسجيل الحالة الداخلية للكائن، والغرض من ذلك هو السماح للمستخدمين لإلغاء عملية غير مؤكدة أو غير صحيحة، يمكن استعادتها إلى حالته الأصلية حتى انه تمت "الأسف" لتناول الطعام.

كيفية إصلاح: مذكرة من قبل فئة مصممة لتخزين حالة الكائن.

كود المفتاح: العملاء لا زوجين مع الطبقة المذكرة، إلى جانب إدارة الصف المذكرة.

أمثلة التطبيق: 1، نأسف لذلك في وقت لاحق.2، عندما لعب أرشيف اللعبة. 3، ctri ويندوز لين + Z. 4، أي في الجزء الخلفي. 4، وقاعدة بيانات إدارة المعاملات.

المزايا: 1، لتوفر للمستخدمين وسيلة لاستعادة الدولة من الآلية التي تسمح للمستخدمين لتكون أكثر ملاءمة للعودة إلى تاريخ الدولة.2، لتحقيق مجموعة من المعلومات، بحيث لا يحتاج المستخدم إلى أن تشعر بالقلق إزاء حالة الحفاظ على التفاصيل.

العيوب: تستهلك الموارد.إذا المتغيرات عضو من الطبقة أيضا، لا بد أن تولي موارد كبيرة نسبيا، وسوف كل مرة تقوم فيها بحفظ تستهلك كمية معينة من الذاكرة.

سيناريوهات الاستخدام: 1، والحاجة إلى حفظ / استعادة الدولة ذات الصلة من البيانات المشهد.2، وتقدم هناك عملية العودة.

ملاحظة: 1، من أجل تلبية مبادئ ديميتر، أيضا إضافة مذكرة إدارة الصف.2، من أجل حفظ الذاكرة، يمكنك استخدام نموذج أولي وضع + المذكرة.

تحقيق

يستخدم وضع مذكرة ثلاث فئاتتذكار،المنشئوتصريف الأعمال.تذكار تحتوي على كائن لاستعادتها في الدولة. يتم إنشاء المنشئ كائن تذكار وتخزينها في الدولة. الكائن في حكومة تصريف الاعمال هو المسؤول عن استعادة الكائنات من دولة تذكار.

MementoPatternDemo، والطبقاتمظاهرة لدينا باستخدامتصريف اعمالوالمنشئ كائن لعرض حالة الانتعاش الكائن.

نمط مذكرة UML الرسم البياني

خطوة 1

إنشاء فئة تذكار.

Memento.java

الطبقة العامة تذكار {
   الدولة سلسلة خاصة.

   تذكار العام (الدولة سلسلة) {
      this.state = الدولة.
   }

   جمهور سلسلة getState () {
      عودة الدولة.
   }	
}

خطوة 2

إنشاء فئة المنشئ.

Originator.java

الطبقة العامة المنشئ {
   الدولة سلسلة خاصة.

   setState الفراغ الجمهور (ولاية سلسلة) {
      this.state = الدولة.
   }

   جمهور سلسلة getState () {
      عودة الدولة.
   }

   الجمهور تذكار saveStateToMemento () {
      العودة تذكار الجديد (الدولة)؛
   }

   الفراغ العام getStateFromMemento (تذكار تذكار) {
      الدولة = Memento.getState ()؛
   }
}

خطوة 3

إنشاء فئة تصريف الاعمال.

CareTaker.java

استيراد java.util.ArrayList.
استيراد java.util.List.

الطبقة العامة في حكومة تصريف الاعمال {
   قائمة خاصة <تذكار> mementoList = جديد ArrayList <تذكار> ()؛

   الفراغ إضافة العامة (الدولة تذكار) {
      mementoList.add (ولاية)؛
   }

   تذكار العام الحصول على (مؤشر كثافة العمليات) {
      العودة mementoList.get (رقم قياسي).
   }
}

خطوة 4

استخدامفي حكومة تصريف الاعمالومنشئ الكائنات.

MementoPatternDemo.java

الطبقة العامة MementoPatternDemo {
   (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية {
      المصدر المنشئ = المنشئ الجديد ()؛
      تصريف الأعمال في حكومة تصريف الاعمال = انتقالية جديدة ()؛
      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