জাভাতে সিঙ্গেলটন ক্লাস - সিঙ্গলটন ক্লাস কীভাবে ব্যবহার করবেন?

জাভাতে সিঙ্গলটন ক্লাসের এই নিবন্ধটি বিভিন্ন উপায়ে আলোচনা করেছে যে কোনও শ্রেণিকে প্রাকটিকাল বাস্তবায়নের পাশাপাশি একটি শ্রেণিকে সিঙ্গলটন করা যায়।

জাভাতে, একটি সিঙ্গলটন ক্লাস এমন একটি বর্গ যা নির্দিষ্ট সময়ে কেবলমাত্র একটি উদাহরণ থাকতে পারে। এটি জাভাতে পাঁচটি ক্রিয়েশনাল ডিজাইনের নিদর্শনগুলির মধ্যে একটি যা অনায়াস বিকাশে সহায়তা করে । এই নিবন্ধের মাধ্যমের মাধ্যমে, আমি আপনাকে জাভাতে একটি সিঙ্গলটন ক্লাস কী এবং আপনি কীভাবে এটি তৈরি করতে পারেন সে সম্পর্কে পরিষ্কার অন্তর্দৃষ্টি দেব।



এই নিবন্ধে আমি যে বিষয়গুলি অন্তর্ভুক্ত করব তার নীচে:

জাভাস্ক্রিপ্টে অ্যারের দৈর্ঘ্য

চল শুরু করি.

জাভাতে সিঙ্গেলটন ক্লাস কি?

সাধারণ লোকের ভাষায়, জাভাতে একটি সিঙ্গলটন ক্লাস হল এমন এক শ্রেণি যা একসাথে একক উদাহরণের মাধ্যমে এটিতে অ্যাক্সেসের অনুমতি দেয়। এই নকশার ধরণটি কোনও শ্রেণীর অপ্রয়োজনীয় তাত্পর্যকে সীমাবদ্ধ করার জন্য এবং কেবলমাত্র এটির একটি তা নিশ্চিত করার জন্য JVM উদাহরণ অনুযায়ী যে কোনও সময় উপস্থিত রয়েছে। সুতরাং, এই নিদর্শনটির সাথে, সিঙ্গলটন হিসাবে সংজ্ঞায়িত যে কোনও শ্রেণীর কেবলমাত্র একটি উদাহরণ রয়েছেএটিতে একটি বিশ্বব্যাপী অ্যাক্সেস রয়েছে। সাধারণ ক্লাস থেকে পৃথক, একটি সিঙ্গলটন ক্লাস অ্যাপ্লিকেশন জীবনচক্রের শেষে ধ্বংস হয় না।



তবে কেন আমাদের প্রথম স্থানে সিঙ্গলটন ক্লাস দরকার?

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

আমি আশা করি আপনি জাভাতে সিঙ্গলটন ক্লাসের ধারণাটি দিয়ে পরিষ্কার হয়ে গেছেন। সুতরাং, এখন এই আরও এগিয়ে চলুনজাভা নিবন্ধে সিঙ্গলটন ক্লাস এবং সেগুলি কীভাবে তৈরি হয় তা দেখুন।



জাভা সিঙ্গলটন ক্লাস ডিজাইনের উপায়

জাভাতে ক্লাস সিঙ্গলটন করার জন্য আপনার নিম্নলিখিত তিনটি জিনিস প্রয়োজন:

  1. একটি শ্রেণীর স্থির সদস্য
  2. বেসরকারী নির্মাণকারী
  3. স্থির কারখানা পদ্ধতি

যেহেতু জাভা বিকাশকারীদের তাদের দিগন্তগুলি অন্বেষণ করতে দেয় তাই রয়েছেআপনি একটি একক ক্লাস ডিজাইন করতে পারেন এমন বেশ কয়েকটি উপায়ে। নীচে আমি সর্বাধিক জনপ্রিয়গুলি তালিকাভুক্ত করেছি।

  1. আগ্রহী ইনিশিয়ালাইজেশন পদ্ধতি
  2. অলস সূচনা পদ্ধতি
  3. থ্রেড নিরাপদ একক পদ্ধতি
  4. ডাবল লক পদ্ধতিতে অলস সূচনা
  5. অলস লোড পদ্ধতি
  6. স্ট্যাটিক ব্লক সূচনা পদ্ধতি

আসুন এখন একের পর এক এগুলির প্রতিটি পদ্ধতির আরও গভীরভাবে ডুব দেওয়া।

1. আগ্রহী সূচনা পদ্ধতি

এটি একটি সিঙ্গলটন ক্লাস তৈরির সহজতম পদ্ধতি যেখানে ক্লাস লোডিংয়ের সময় উদাহরণটি তৈরি করা হয়। এই পদ্ধতিটি ব্যবহার করে একটি সিঙ্গলটন ক্লাস তৈরি করতে আপনার নীচের বর্ণিত পদক্ষেপগুলি অনুসরণ করতে হবে:

  1. কনস্ট্রাক্টরকে প্রাইভেট ঘোষণা করুন।
  2. পরবর্তী পদক্ষেপটি এই সিঙ্গলটন ক্লাসের জন্য একটি প্রাইভেট ক্লাসের সদস্য তৈরি করা।
  3. এখন, আপনাকে একটি ফ্যাক্টরি পদ্ধতি নির্ধারণ করতে হবে যা আপনার শ্রেণীর অবজেক্টটি ফেরত দেওয়ার জন্য ব্যবহৃত হবে, যা আমরা শ্রেণীর সদস্যের উদাহরণ হিসাবে তৈরি করেছি।
  4. আপনি যদি এই স্থির দৃষ্টান্তটি সরাসরি অ্যাক্সেস করতে চান তবে আপনি স্থিতিশীল সদস্যটিকে সর্বজনীন ঘোষণাও করতে পারেন।

এখন, এগুলি কীভাবে প্রয়োগ করা যায় তা দেখুন let

// ইজার ইনিশিয়ালাইজেশন পাবলিক ক্লাস ইজারসিংলেটন {বেসরকারী স্ট্যাটিক ফাইনাল ইজারসিংলেটন ইনস্ট্যান্স = নতুন ইজারসিংটন () প্রাইভেট ইজারসিংটন ()}} পাবলিক স্ট্যাটিক ইজারসিংটন গেট ইনস্ট্যান্স () {INSTANCE {{

আপনি যদি কোডটি দেখতে পান তবে আপনি পর্যবেক্ষণ করতে পারবেন যে প্রতিবার আমরা কোনও অবজেক্টটি ব্যবহার করছি যা আমরা ব্যবহার করছিgetInstance ()ক্লাসের পরিবর্তে প্রার্থনা করার চেয়ে পদ্ধতি নির্মাতাতবে এর নিজস্ব অসুবিধাগুলি রয়েছে। আপনি যদি ক্লাস সিঙ্গলটন তৈরি করতে এই পদ্ধতিটি ব্যবহার করেন তবে অ্যাপ্লিকেশন এটি ব্যবহার করছে কিনা তা নির্বিশেষে একটি উদাহরণ তৈরি করা হবে।

সুতরাং, আসুন এগিয়ে যাওয়া যাক এবং জাভাতে একটি সিঙ্গলটন ক্লাস তৈরির অন্য উপায় দেখুন।

2. অলস সূচনা পদ্ধতি

এই পদ্ধতিটিকে অলস সূচনা বলা হয় কারণ এটি প্রথম ব্যবহার না হওয়া অবধি শ্রেণীর উদাহরণ তৈরি স্থগিত করে। আমি যা বলতে চাইছি তা হল এই পদ্ধতির সাহায্যে কোনও বস্তুর প্রয়োজন হলেই তৈরি করা হয়। এটি এর অপ্রয়োজনীয় সৃষ্টি এড়াতে সহায়তা করে । এইভাবে একটি একক ক্লাস ডিজাইন করতে আপনার নীচের তালিকাভুক্ত পদক্ষেপগুলি অনুসরণ করতে হবে:

  1. সবার আগে, কনস্ট্রাক্টরকে ব্যক্তিগত হিসাবে ঘোষণা করুন।
  2. তারপরে আপনাকে এই শ্রেণীর জন্য একটি ব্যক্তিগত স্ট্যাটিক উদাহরণ তৈরি করতে হবে তবে এটি এখনই ইনস্ট্যান্ট করার দরকার নেই।
  3. অবশেষে, একটি কারখানার পদ্ধতি তৈরি করুন যা প্রথমে ইনস্ট্যান্ট সদস্যটি নাল কিনা তা যাচাই করবে। তা না হলে এটি আপনার জন্য সিঙ্গলটন ক্লাসের একটি উদাহরণ তৈরি করবে এবং এটি ফিরিয়ে দেবে।

কোডটি নীচে দেখায় যে এটি কীভাবে সম্পাদন করা যায়।

// অলস প্রারম্ভিককরণ পাবলিক ক্লাস LazySingleton {বেসরকারী স্ট্যাটিক LazySingleton INSTANCE = নাল প্রাইভেট LazySingleton ()}} পাবলিক স্ট্যাটিক LazySingleton getInstance () {if (INSTANCE == নাল) nch সিঙ্ক্রোনাইজড (LazySingleton.class) ইনস্ট্যান্স ফিরে

৩. থ্রেড সেফ সিঙ্গলটন পদ্ধতি

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

// থ্রেড সেফ সিঙ্গলটন পাবলিক ক্লাস থ্রেডস্যাফসিংগেলটন {বেসরকারী স্ট্যাটিক থ্রেডস্যাফসিংগেলটন ইনস্ট্যান্স প্রাইভেট থ্রেডস্যাফসিংসেলটন ()} পাবলিক স্ট্যাটিক সিঙ্ক্রোনাইজড থ্রেডস্যাফেস সিঙ্গলটন getInstance () {যদি (INSTANCE == নাল) ST INSTANCE নতুন

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

4. ডাবল লক সহ অলস সূচনা পদ্ধতি

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

জাভা ডাবল ইনট মধ্যে পরিণত
ডাবল লক পাবলিক ক্লাসের সাথে অলস সূচনা নাল) ST INSTANCE = নতুন LazyDoubleLockSingleton () IN}} INSTANCE}}

5. অলস লোড পদ্ধতি

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

নীচে একই সম্পাদন করার কোড রয়েছে।

// অলস লোড পদ্ধতি পাবলিক ক্লাস LazyLoadSingleton {বেসরকারী LazyLoadSingleton ()}} প্রাইভেট স্ট্যাটিক ক্লাস সিঙ্গলটনক্লাসহোল্ডার {স্ট্যাটিক ফাইনাল ভার INSTANCE = নতুন LazyLoadSingleton ()} পাবলিক স্ট্যাটিক LazyLoadSingleton {Antance

Stat. স্থিতিশীল ব্লক প্রারম্ভিককরণ পদ্ধতি

জাভাতে সিঙ্গেলটন ক্লাস তৈরির এই পদ্ধতিটিআগ্রহী সূচনা পদ্ধতির অনুরূপ। পার্থক্য কেবলমাত্র এই শ্রেণীর জন্য উদাহরণটি স্থির ব্লকের মধ্যে তৈরি করা হয় কার্যকারিতা।

// স্ট্যাটিক ব্লক ইনিশিয়েশন পাবলিক ক্লাস স্ট্যাটিক ব্লকসিংলেটন {প্রাইভেট স্ট্যাটিক ব্লকসিংলেটন প্রাইভেট স্ট্যাটিক ব্লকসিংলেটটন ()}} // স্ট্যাটিক ব্লক স্ট্যাটিকের মধ্যে ব্যতিক্রম হ্যান্ডলিং {চেষ্টা করুন ST ইনস্ট্যান্স = নতুন স্ট্যাটিকব্লকসিংটলটন ()} ক্যাচ (এক্সেপশন পূর্ববর্তী) {নতুন রানটাইম এক্সেকশন উপলক্ষে একটি সিঙ্গলটন ক্লাস তৈরি করার সময়))}} পাবলিক স্ট্যাটিক স্ট্যাটিক ব্লকসিংলেটন getInstance () ST রিটার্ন ইনস্ট্যান্স}}

এটি জাভাতে সিঙ্গলটন ক্লাসে এই নিবন্ধটির শেষে নিয়ে আসে। আপনি যদি জাভা সম্পর্কে আরও জানতে চান তবে আমাদের আমাদের উল্লেখ করতে পারেন ।

এখন আপনি যে জাভাতে সিঙ্গেলটন ক্লাসটি বুঝতে পেরেছেন তা পরীক্ষা করে দেখুন এডুরেকা, বিশ্বস্ত জুড়ে 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা by এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সটি এমন শিক্ষার্থী এবং পেশাদারদের জন্য তৈরি করা হয়েছে যারা জাভা ডেভেলপার হতে চান। কোর্সটি আপনাকে জাভা প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং হাইবারনেট ও স্প্রিংয়ের মতো বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই 'জাভাতে একক ক্লাস' নিবন্ধটির মন্তব্য বিভাগে উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।