জাভাতে কীভাবে প্রাইভেট কনস্ট্রাক্টর প্রয়োগ করবেন



এই নিবন্ধটি আপনাকে জাভাতে প্রাইভেট কনস্ট্রাক্টর সম্পর্কে বিশদ এবং বিস্তৃত জ্ঞান সরবরাহ করবে এবং উদাহরণ সহ এটি ব্যবহার করা হবে।

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

জাভাতে কনস্ট্রাক্টরের পরিচয়

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





অবশ্যই, না।

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



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

জাভাতে প্রাইভেট কনস্ট্রাক্টর

একক ক্লাস

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



ক্লাসের উদাহরণটি বের করার আরও একটি উপায় থাকতে হবে এবং ফলাফলটি ফিরিয়ে আনতে একটি রিটার্ন পদ্ধতি method নীচে এটির একটি উপযুক্ত চিত্র রয়েছে is প্রথম চিত্রগ্রন্থটিতে সম্ভাব্য ফলাফলকে চিত্রিত করা হয়েছে যেখানে 'a.x' এর মান 20 এবং 'b.x' এর মান 20 হিসাবেও আসে। কোডটিতে, যখন আমরা সিঙ্গলটন বেসরকারী ক্লাসটি সংজ্ঞায়িত করি, এর নির্মাতারা শ্রেণীর বাইরে অ্যাক্সেস করতে পারবেন না।

A.x = 20 এর মান

B.x = 20 এর মান

// ব্যক্তিগত কন্সট্রাক্টর ব্যবহার করে সিঙ্গেলটন // প্যাটার্নের প্রয়োগ প্রদর্শনের জন্য জাভা প্রোগ্রাম। আমদানি java.io. * ক্লাস মাইসিংলেটন {স্ট্যাটিক মাইসিংলেটন উদাহরণ = নাল পাবলিক ইন্ট x = 10 // প্রাইভেট কনস্ট্রাক্টর ক্লাস প্রাইভেট মাইসিংলেটনের () {} // ফ্যাক্টরি পদ্ধতিতে ব্যবহারকারীর নজিরগুলি স্ট্যাটিক পাবলিক মাইসিংলেটনের সাথে সরবরাহ করতে পারবেন না getInstance () {if (দৃষ্টান্ত == নাল) উদাহরণ = নতুন মাইসিংলেটন () রিটার্ন উদাহরণ}} // ড্রাইভার শ্রেণীর বর্গ প্রধান {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং আরগস []) {মাইসিংলেটটন a = মাইসিংলেটন.জেটআইন্সট্যান্স () মাইসিংলেটন বি = MySingleton.getInstance () ax = ax + 10 System.out.println ('ax এর মান =' + কুড়াল) System.out.println ('bx =' + bx এর মান)}}

জাভাতে প্রাইভেট কনস্ট্রাক্টর এর প্রভাব

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

  • স্বতন্ত্র ক্লাস, যার কেবল স্থির পদ্ধতি এবং সদস্য রয়েছে।
  • নির্দিষ্ট ক্লাসগুলি, যা কেবলমাত্র স্থিতিশীল চূড়ান্ত সদস্যদের (ধ্রুবক) ব্যবহার করেছে।
  • একক একত্রিত করা।
  • কারখানার পদ্ধতিগুলি অন্তর্ভুক্ত করা।

টাইপ-নিরাপদ, গণনাগুলি ব্যবহার করতে।

অভ্যন্তরীণ কনস্ট্রাক্টর চেইনিং

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

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

প্যাকেজ com.jorterdev.constructor পাবলিক ক্লাস কর্মচারী - প্রাইভেট আইটি আইডি ব্যক্তিগত স্ট্রিং নাম পাবলিক কর্মচারী () public এটি ('জন দো', 999) System.out.println ('ডিফল্ট কর্মচারী তৈরি হয়েছে')} পাবলিক কর্মচারী (int i) { এটি ('জন দো', i) System.out.println ('ডিফল্ট নাম দিয়ে কর্মচারী তৈরি করা হয়েছে')} পাবলিক কর্মচারী (স্ট্রিং, ইনট্রি i) {this.id = i this.name = s System.out.println ( 'কর্মচারী তৈরি')} পাবলিক স্ট্যাটিক অকার্যকর মূল (স্ট্রিং [] আরোগুলি) {কর্মচারী এমপি = নতুন কর্মচারী () System.out.println (এমপি) কর্মচারী এম 1 = নতুন কর্মচারী (10) System.out.println (এম 1) কর্মচারী এমপ 2 = নতুন কর্মচারী ('পঙ্কজ', 20) System.out.println (এম 2)} @ ওভাররাইড পাবলিক স্ট্রিং টু স্ট্রিং () {রিটার্ন 'আইডি =' + আইডি + ', নাম =' + নাম} পাবলিক ইন গেটআইডি () {রিটার্ন আইডি } পাবলিক অকার্যকর সেটআইডি (ইন আইডি) {this.id = আইডি} পাবলিক স্ট্রিং getName () {রিটার্ন নাম oid পাবলিক অকার্যকর সেটনাম (স্ট্রিং নাম) {this.name = নাম}}

একা ক্লাস ডিজাইন প্যাটার্ন

জাভা উদাহরণ কোডে কমান্ড লাইন আর্গুমেন্ট
  • শ্রেণি-স্তরের সদস্য (আগ্রহী ইনিশিয়ালাইজেশন পদ্ধতি):

  1. প্রথমে একটি সিঙ্গলটন ক্লাসের একটি ব্যক্তিগত ধ্রুবক স্ট্যাটিক উদাহরণ তৈরি করুন।

  2. তারপরে, একটি স্থিতিশীল পদ্ধতি লিখুন, যা একটি একক শ্রেণীর অবজেক্টকে ফেরত দেয়, যা আমরা শ্রেণি-সদস্য উদাহরণ হিসাবে তৈরি করেছি।

  3. স্থির স্থির দৃষ্টান্তটি সরাসরি অ্যাক্সেসের জন্য কোনও স্থির সদস্যকে জনসাধারণ হিসাবে চিহ্নিত করা সম্ভব।

  4. সিঙ্গেলটন শ্রেণি ইনস্ট্যান্টেশনের ক্ষেত্রে একটি সাধারণ জাভা শ্রেণীর থেকে পৃথক হয়। একটি সাধারণ ক্লাসে, কনস্ট্রাক্টর ব্যবহার করা হয় তবে সিঙ্গলটন ক্লাসের জন্য আমরা get get Instance () পদ্ধতিটি ব্যবহার করি।

  • শ্রেণি-স্তরের সদস্য (অলস সূচনা পদ্ধতি):

  1. প্রথমে কনস্ট্রাক্টরটিকে প্রাইভেট হিসাবে শুরু করুন।

  2. তারপরে এই সিঙ্গলটন শ্রেণীর একটি ব্যক্তিগত স্ট্যাটিক উদাহরণ তৈরি করুন। এটি তাত্ক্ষণিকভাবে না তা মনে রাখবেন।

  3. তারপরে একটি স্ট্যাটিক পদ্ধতি লিখুন, যা স্থির দৃষ্টান্তের সদস্যটিকে নালার জন্য পরীক্ষা করে এবং দৃষ্টান্তটি সূচনা করে। অবশেষে, এটি একক ক্লাসের একটি বস্তু দেয়।

  • শ্রেণী-স্তরের সদস্য (ডাবল লক পদ্ধতির সাথে অলস সূচনা):

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

  • নেস্টেড ইনার ক্লাস (অলস লোড পদ্ধতি) ব্যবহার করে:

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

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

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

এটি সহ, আমরা জাভা নিবন্ধে প্রাইভেট কনস্ট্রাক্টরের শেষে এসেছি। আমি আশা করি আপনি প্রাইভেট কনস্ট্রাক্টর এবং আপনার জাভাতে কীভাবে ব্যবহার করা যায় সে সম্পর্কে একটি ধারণা পেয়েছেন understanding

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

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