ফ্লাইওয়েট প্যাটার্নটি ব্যবহারের উদ্দেশ্য হ'ল অযৌক্তিক অবজেক্টের সূচনা এবং এর ফলে স্থান বাঁচানো। জিওএফ দ্বারা সংজ্ঞায়িত হিসাবে , কোনও জিনিসের দুটি রাষ্ট্র থাকতে পারে, অন্তর্নিহিত এবং বহির্মুখী রাষ্ট্র:
- অভ্যন্তরীণ অবস্থা: ফ্লাইওয়েটে সংরক্ষণ করা হয়; এটিতে ফ্লাইওয়েট প্রসঙ্গে স্বাধীন তথ্য রয়েছে, যার ফলে এটি ভাগ করে নেওয়া যায়।
- এক্সট্রিনসিক স্টেট: ফ্লাইওয়েটের প্রসঙ্গে নির্ভর করে এবং তারতম্য হয় এবং তাই ভাগ্য ভাগাভাগি করা যায় না। ক্লায়েন্ট অবজেক্টগুলি যখন ফ্লাইওয়েটের প্রয়োজন হয় তখন বহির্মুখী অবস্থার বাইরে যাওয়ার জন্য দায়বদ্ধ।
ধরে নিই যে আমরা একটি সাধারণ পাঠ্য সম্পাদক অ্যাপ্লিকেশন বিকাশ করতে চাই যেখানে প্রতিটি কলামে পাঠ্যের সমস্ত সারি এবং সারিতে অক্ষর থাকতে পারে।
চরিত্র শ্রেণির নকশা কীভাবে করা যায় তা এখানে দ্বিধা। char c
ক্যারেক্টার বর্গ মধ্যে মেন (স্বকীয় অঙ্গরাজ্য) বস্তুর হওয়া উচিত। তবে, একটি চরের একটি ফন্ট এবং আকার থাকতে পারে (বহিরাগত অবস্থা); সুতরাং আমাদের এটির বহিরাগত অবস্থা সারি (ক্লায়েন্ট) এ সঞ্চয় করতে হবে এবং প্রয়োজনে এটি অ্যাক্সেস করতে হবে। এই উদ্দেশ্যে, ফন্ট এবং আকারগুলি সংরক্ষণ করে এমন দুটি তালিকা তৈরি করা হয়েছে।
ফ্লাইওয়েট প্যাটার্ন অনুসরণ করে, অক্ষরটি এখন পুনরায় ব্যবহারযোগ্য এবং বস্তুর নির্দিষ্ট তালিকা (ফ্লাইওয়েট পুল) থেকে সমস্ত ASCII চিহ্ন ( Character
বস্তু) রয়েছে যা থেকে বিষয়গুলি রেফারেন্স করা হচ্ছে ।
আমি এখানে দৃষ্টিভঙ্গি বর্ণনা করেছি:
'হ্যালো' মুদ্রণের জন্য, 5 Character
এর পরিবর্তে কেবল 4 টি অবজেক্টের প্রয়োজন Once একবার ফন্টটি পরিবর্তিত হয়ে গেলে কোনও নতুন অবজেক্টের প্রয়োজন হয় না; মনে রাখবেন যে আমরা অক্ষর শ্রেণিতে বহিরাগত অবস্থা সংরক্ষণ করে থাকলে এটি সম্ভব হত না , যেমন,
class Character
{
char c;
int Size;
Font font;
....
}
বৃহত্তর ডেটাসেটে এই প্যাটার্নটি প্রয়োগ করা অ্যাপ্লিকেশনটির স্মৃতি জটিলতার ও অবজেক্টের পুনঃব্যবহারযোগ্যতার উপর উল্লেখযোগ্য অপ্টিমাইজেশনের দিকে নিয়ে যায় ।