স্মৃতিচিহ্নের প্যাটার্নের পিছনে দর্শন


9

আমি ইন্টারনেটের বিভিন্ন উত্স থেকে স্মৃতিসৌধের প্যাটার্নটি পড়ছি। বিভিন্ন উত্স থেকে পৃথক পৃথক তথ্য আমাকে কেন এই প্যাটার্নটি প্রয়োজন তা নিয়ে বিভ্রান্তিতে ফেলেছে।

Dofactory বাস্তবায়ন বলছেন যে এই প্যাটার্ন প্রাথমিক উদ্দেশ্য সিস্টেমের অবস্থা পুনরুদ্ধার হয়।

উইকি বলেছেন যে প্রাথমিক অভিপ্রায়টি হ'ল সিস্টেমে পরিবর্তনগুলি পুনরুদ্ধার করতে সক্ষম হওয়া। এটি একটি আলাদা প্রভাব দেয় - বলেছিল যে কোনও সিস্টেমের পক্ষে পুনরুদ্ধার করার প্রয়োজন নেই মেমেন্টো বাস্তবায়ন সম্ভব। এবং পুনরুদ্ধার করার ক্ষমতা এটির একটি বৈশিষ্ট্য।

ওওডিজাইন এটি বলে

কখনও কখনও কোনও সময়ে কোনও বস্তুর অভ্যন্তরীণ অবস্থা ক্যাপচার করা প্রয়োজন এবং পরবর্তী সময়ে অবজেক্টটিকে সেই অবস্থায় ফিরিয়ে আনার ক্ষমতা থাকতে হবে। ত্রুটি বা ব্যর্থতার ক্ষেত্রে এ জাতীয় মামলা কার্যকর।

সুতরাং, আমার প্রশ্ন হ'ল আমরা কেন এটি ব্যবহার করি? এটি কি পূর্ববর্তী রাজ্যগুলি সংরক্ষণ করার জন্য - বা তত্ত্বাবধায়ক এবং মেমেন্টোর মধ্যে এনক্যাপসুলেশন প্রচার করতে? এই ধরণের এনক্যাপসুলেশন এত গুরুত্বপূর্ণ কেন?

সম্পাদনা করুন: যারা যাচ্ছেন, তাদের এই বাস্তবায়নটি দেখুন!

সম্পাদনা : আমি আমার সমস্যার একটি স্মারক সমাধান বাস্তবায়নে কাজ করছি। আমি সে সম্পর্কিত আরও একটি প্রশ্ন পোস্ট করব এবং সেই প্রশ্নের সাথে এটি যুক্ত করব। মূল্যবান পরামর্শ দিয়ে সাড়া দেওয়ার জন্য সবাইকে ধন্যবাদ!

3 সম্পাদনা করুন : আমার নমুনা বাস্তবায়নের লিঙ্কটি এখানে

উত্তর:


2

একটি অনুরূপ প্যাটার্ন, মেমো বা মেমোয়েজেশন স্টেটও সংরক্ষণ করে তবে এটি প্রায়শই প্রোগ্রামের গতি অপ্টিমাইজেশন হিসাবে ব্যবহৃত হয়। যদি কোনও সময় গ্রহণকারী ক্রিয়াকলাপে সীমিত সংখ্যক সাধারণ ইনপুট এবং আউটপুট থাকে তবে সর্বাধিক সাধারণ (বা তাদের সমস্ত) হ্যাশটেবলে সংরক্ষণ করা যায়। একই ইনপুটগুলির সাথে আবার যখন কল করা হয়, এটি প্রথমে হ্যাশটেবলটি পরীক্ষা করে এবং এটি যদি এটি খুঁজে পায় তবে এটি পুনরায় গণনা না করে পূর্ববর্তী আউটপুট ফেরত দেয়।

আমি কল্পনা করি কোনও পারফরম্যান্সের জন্য একটি মেমেন্টো প্যাটার্নও ব্যবহার করা যেতে পারে - বিপরীত রাষ্ট্র পরিবর্তনের জন্য সমস্ত বিপরীত গণনা না করে কেবল পূর্ববর্তী অবস্থা থেকে পুনরুদ্ধার করুন। কিছু ফাংশনগুলি একমুখী হয়, সুতরাং আপনি পূর্বের অবস্থাটি সংরক্ষণ না করে কোনও পূর্বাবস্থা নেই।

আপনি পর্যায়ক্রমিক, বা সাইন এর মতো প্রতিসাম্যিক ফাংশন স্মরণে রাখতে একটি মেমেনো প্যাটার্ন ব্যবহার করতে পারেন। 0-180 ডিগ্রি থেকে সমস্ত মান গণনা করুন, তারপরে 180-360 থেকে নেতিবাচক মানগুলি পেতে তাদের মাধ্যমে পিছনে যান। আরও ভাল, 0-90 থেকে মান গণনা করুন, তারপরে সেই মানগুলির মধ্য দিয়ে পিছনে যান 90-180, 180-270 এর জন্য এগিয়ে এবং 270-360 থেকে পিছনে।

ওয়ার্ডে সিটিআরএল-জেড বা কোনও সফ্টওয়্যারটির পূর্বাবস্থায় ফাংশন সম্ভবত মেমেন্টো প্যাটার্ন ব্যবহার করে বা কিছু ক্ষেত্রে সম্ভবত প্রতিটি ফাংশনের বিপরীত দ্বারা প্রয়োগ করা হয়। দ্বিতীয় ক্ষেত্রে, কোন ফাংশনগুলির ইতিহাস বলা হত তা স্মৃতিসৌধ হবে, সুতরাং আমি মনে করি স্মৃতিসৌধের প্যাটার্নটি সর্বদা পূর্বাবস্থায় ব্যবহৃত হয়।


বিপরীত গণনা এড়াতে এবং পর্যায়ক্রমিক ক্রিয়াকলাপগুলির জন্য মুখস্তকরণের প্যাটার্ন ব্যবহৃত হয় - এই তথ্যের জন্য ধন্যবাদ! ধারণাগুলি epুকে পড়ার জন্য ব্যবহারিক উদাহরণের মতো কিছুই নয়!
TheSilverBullet

স্কয়ার রুট আনুমানিককরণের জন্য নিউটন এর পদ্ধতির মতো এমন কিছু ব্যবহার করা যেতে পারে যখন আপনি কখন সম্পন্ন করবেন। mitpress.mit.edu/sicp/full-text/book/… যেহেতু অন্তর্নিহিত ভাসমান-পয়েন্ট উপস্থাপনার সীমিত নির্ভুলতা রয়েছে, সমস্ত সংখ্যার শেষ পর্যন্ত পুনরাবৃত্তি প্রায় হবে। যদি আপনি জানেন যে পুরানো অনুমানগুলি কী ছিল, আপনি প্রথম বার যখন কোনও উত্তর পুনরাবৃত্তি করতে পারেন এবং সর্বাধিক নির্ভুলতা পেতে পারেন (কিছু সময় এবং স্মৃতি ব্যয় করে)।
গ্লেনপিটারসন

8

নিজেই, মেমেন্টো প্যাটার্নটি কেবল রাজ্যগুলি ক্যাপচার এবং সংরক্ষণে ব্যবহৃত হয়। রাষ্ট্রগুলি সিস্টেমের বাকী অংশ থেকে রক্ষা করার জন্যই এনক্যাপসুলেশন বিদ্যমান - একবার কোনও রাজ্য দখল হয়ে গেলে, সাবধানতার সাথে এটি নিয়ন্ত্রণ করা দরকার। উদাহরণস্বরূপ, কোনও পূর্ববর্তী অবস্থা সংরক্ষণের পরে এটি পরিবর্তন করা সম্ভব হবে তা বোঝা যায় না (এটি ইতিহাসের পরিবর্তন হবে) এবং অন্যকে প্রভাবিত না করে কেবল কোনও বস্তুর পূর্ববর্তী অবস্থানে ফিরে আসার অর্থটি বোধগম্য হতে পারে না (প্রতিরোধের জন্য) পুরোপুরি অবৈধ অবস্থায় প্রবেশ করা থেকে সিস্টেম) from

আমি দেখেছি এমন একটি মেমেন্টোর সর্বাধিক সাধারণ ব্যবহার হ'ল পূর্বাবস্থায় কার্যকারিতা সমর্থন করা। এটি সময়ের সাথে সামনের দিকে এগিয়ে গিয়ে পুনরায় কার্যকারিতা সংরক্ষণ করার সাথে সম্পর্কিত।


আমি এটিকে অনুলিপি যুক্তি এবং সিরিয়ালাইজেশনের যুক্তিতেও ব্যবহার করেছি (কোনও তারের উপরে বস্তু প্রেরণ করতে, বা কোনও ফাইলে রাষ্ট্র সংরক্ষণ করতে)।
স্কট হুইটলক

@ স্কটউইটলক কোনও ফাইলের মধ্যে সংরক্ষণের অবস্থা মেমেন্টোর জন্য অর্থবোধ করে। মেমেন্টো অবজেক্টটিতে একটি নির্দিষ্ট বিন্যাসে নিজেকে লিখতে এবং এই ফর্ম্যাটটি পড়ে একটি নতুন তৈরি করার ক্ষমতা থাকবে, যখন কেয়ারটেকার একটি বাহ্যিক ফর্ম্যাটে রাষ্ট্র বাঁচানোর জন্য ইন্টারফেস সরবরাহ করবে বা বাহ্যিক বিন্যাস থেকে রাষ্ট্রকে লোড করবে - এটি কেবলমাত্র একটি এক্সটেনশন extension স্মৃতিতে রাষ্ট্র সংরক্ষণ যদিও এটি অনুলিপি যুক্তিতে ব্যবহার করা যায় তা আমি সত্যিই দেখতে পাচ্ছি না। আমাকে এ নিয়ে আরও অনেক কিছু ভাবতে হবে।
থমাসের মালিক


@ থমাস ওভেনস, আপনার ব্যাখ্যার সেই গুরুত্বপূর্ণ অংশটির জন্য ধন্যবাদ যে স্মৃতিসৌধটি মূলত "সংরক্ষণ" রাষ্ট্রসমূহের জন্য। এটি পুনরুদ্ধার করা বা না করা বাস্তবায়নকারীর বিচক্ষণতা! আমি আমার সমস্ত তথ্যসূত্র থেকে ব্যাখ্যাটির এই অংশটি হারিয়েছি!
TheSilverBullet

@ স্কটউইটলক, আপনার স্মৃতিসৌধ বাস্তবায়নের লিংকের জন্য অনেক ধন্যবাদ! আমি কেবল এটির প্রাথমিক ব্যবহারটিই বুঝতে পারি না, তবে আপনার মতো স্বজ্ঞাত ব্যবহারও করতে পেরেছি!
TheSilverBullet

1

এই সমস্ত সংজ্ঞা আপনাকে একই দিকে চালিত করে; তারা সকলেই বলছে যে বিন্দুটি তার আগের অবস্থায় কিছু ফিরিয়ে আনতে সক্ষম হবে । যে কিছু পুরো সিস্টেম, বা কেবল একটি একক বস্তু হতে পারে।

সময়ের সাথে সাথে কোনও রেকর্ড স্থিতি পরিবর্তিত হয় তবে এই প্যাটার্নটি কার্যকর, তবে যে কোনও সময় কোনও পূর্বের অবস্থায় এটি পুনরুদ্ধার করতে আপনার ব্যবসায়ের প্রয়োজনীয়তা রয়েছে। অথবা বিকল্প হিসাবে, আপনার যদি প্রয়োজন হয় যে কোনও রেকর্ডটি পূর্ববর্তী সময়ে যেমন রেকর্ডটি দেখতে পেলেন। এই ধরণের প্রয়োজনীয়তা বিভিন্ন ধরণের সিস্টেমে খুব সাধারণ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.