سؤال

وقرأت ما يلي في

<اقتباس فقرة>   

والأجسام الثابتة بشكل خاص   مفيد لتنفيذ شيوعا معين   التعابير مثل التراجع / إعادة وabortable   صفقة. خذ على سبيل المثال التراجع. أ   تقنية مشتركة لتنفيذ التراجع   هو الحفاظ على كومة من الأشياء التي   تعرف بطريقة أو بأخرى كيفية تشغيل كل أمر   في الاتجاه المعاكس (ما يسمى ب "القيادة   نمط "). ومع ذلك، معرفة كيف   لتشغيل أمر في الاتجاه المعاكس يمكن أن يكون   مخادع. وهناك تقنية أبسط هو   الحفاظ على كومة من الأشياء الثابتة   تمثل حالة النظام   بين أوامر متتالية. ثم، ل   التراجع عن الأمر، ببساطة العودة إلى الوراء   إلى حالة النظام السابقة (و   ربما تخزين الحالة الراهنة على   كومة إعادته).

وHowver، والمادة لا تظهر مثال عملي جيد على كيفية الأشياء غير قابل للتغيير يمكن استخدامها لتنفيذ "التراجع" العمليات. على سبيل المثال ... حذف 10 رسائل البريد الإلكتروني من البريد الوارد في Gmail. مرة كنت تفعل ذلك، ولديه خيار التراجع. كيف يمكن مساعدة كائن غير قابل للتغيير في هذا الصدد؟

هل كانت مفيدة؟

المحلول

سوف

والكائنات غير قابل للتغيير تعقد الدولة بأكملها للنظام، وحتى في هذه الحالة كنت قد الكائن والذي يحتوي على صندوق البريد الوارد الأصلي، ومن ثم يعترض B الذي يحتوي على صندوق البريد الوارد مع عشر رسائل البريد الإلكتروني المحذوفة، و (في الواقع ) مؤشر العودة من B إلى A يدل على ذلك، إذا كنت تفعل واحدة "التراجع"، ثم التوقف عن استخدام B كدولة للنظام والبدء في استخدام وبدلا من ذلك.

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

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

لقيام "التراجع"، وكنت أعد تنفيذ جميع ولكن كائن أمر آخر، استخدام ذلك الكائن الحالي الجديد، ومحو القيادة الماضي (أو حفظه ككائن "الإعادة"). في كل مرة كنت تفعل إجراء جديد، يجب تحديث الكائن الحالي، إضافة القيادة يرتبط إلى القائمة، وبعد ذلك (إذا كانت القائمة أكثر من عشرة أوامر طويلة) تنفيذ الأمر الأول على كائن من بداية قائمة التراجع ونرمي القيادة الأول في القائمة.

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

وSVN وغيرها من التحكم في إصدار الأنظمة بشكل فعال شكل disk- أو القائم على الشبكة من التراجع، وإعادة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top