মডিউল প্যাটার্নটি মূলত প্রচলিত সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের ক্লাসগুলির জন্য ব্যক্তিগত এবং পাবলিক উভয় এনক্যাপুলেশন সরবরাহ করার একটি উপায় হিসাবে সংজ্ঞায়িত করা হয়েছিল।
মডিউল প্যাটার্নটির সাথে কাজ করার সময়, আমরা এটির সাথে শুরু করার জন্য যে সাধারণ টেম্পলেটটি ব্যবহার করি তা সংজ্ঞায়িত করা আমাদের পক্ষে কার্যকর হতে পারে। এখানে নাম-ব্যবধান, সরকারী এবং ব্যক্তিগত ভেরিয়েবলগুলি কভার করা আছে।
জাভাস্ক্রিপ্টে, মডিউল প্যাটার্নটি ক্লাসের ধারণাটিকে আরও অনুকরণ করার জন্য ব্যবহৃত হয় যাতে আমরা সরকারী / ব্যক্তিগত পদ্ধতি এবং ভেরিয়েবল উভয়কে একটি একক বস্তুর মধ্যে অন্তর্ভুক্ত করতে সক্ষম হয়ে থাকি, এইভাবে বিশ্বব্যাপী ক্ষেত্র থেকে নির্দিষ্ট অংশগুলি রক্ষা করে। এর ফলে কী ঘটে তা হ'ল পৃষ্ঠাগুলির অতিরিক্ত স্ক্রিপ্টগুলিতে সংজ্ঞায়িত অন্যান্য ফাংশনগুলির সাথে আমাদের ফাংশন নামগুলির বিরোধিতা করার সম্ভাবনা হ্রাস।
var myNamespace = (function () {
var myPrivateVar, myPrivateMethod;
// A private counter variable
myPrivateVar = 0;
// A private function which logs any arguments
myPrivateMethod = function( foo ) {
console.log( foo );
};
return {
// A public variable
myPublicVar: "foo",
// A public function utilizing privates
myPublicFunction: function( bar ) {
// Increment our private counter
myPrivateVar++;
// Call our private method using bar
myPrivateMethod( bar );
}
};
})();
সুবিধাদি
মডিউল প্যাটার্ন কেন একটি ভাল পছন্দ? শুরুর জন্য, এটি কমপক্ষে জাভাস্ক্রিপ্টের দৃষ্টিকোণ থেকে সত্য এনক্যাপসুলেশনের ধারণার চেয়ে অবজেক্ট-ভিত্তিক পটভূমি থেকে আগত বিকাশকারীদের পক্ষে অনেক ক্লিনার।
দ্বিতীয়ত, এটি ব্যক্তিগত ডেটা সমর্থন করে - সুতরাং, মডিউল প্যাটার্নে, আমাদের কোডের সর্বজনীন অংশগুলি ব্যক্তিগত অংশগুলিকে স্পর্শ করতে সক্ষম হয়, তবে বাইরের বিশ্ব শ্রেণীর ব্যক্তিগত অংশগুলি স্পর্শ করতে অক্ষম।
অসুবিধেও
মডিউল প্যাটার্নের অসুবিধাগুলি হ'ল আমরা যেমন সরকারী ও বেসরকারী উভয় সদস্যকেই আলাদাভাবে অ্যাক্সেস করি, যখন আমরা দৃশ্যমানতা পরিবর্তন করতে চাই, তবে সদস্যকে ব্যবহৃত প্রতিটি জায়গাতেই আমাদের বাস্তবে পরিবর্তন করতে হবে।
আমরা পরবর্তী সময়ে অবজেক্টে যুক্ত হওয়া পদ্ধতিগুলিতে ব্যক্তিগত সদস্যদের অ্যাক্সেস করতে পারি না । এটি বলেছিল, অনেক ক্ষেত্রে মডিউল প্যাটার্নটি এখনও বেশ কার্যকর এবং যখন সঠিকভাবে ব্যবহৃত হয়, অবশ্যই আমাদের প্রয়োগের কাঠামোর উন্নতি করার সম্ভাবনা রয়েছে।
প্রকাশিত মডিউল প্যাটার্ন
এখন যেহেতু আমরা মডিউল প্যাটার্নটির সাথে আরও কিছুটা বেশি পরিচিত, আসুন এবার কিছুটা উন্নত সংস্করণ - খ্রিস্টান হেলম্যানের প্রকাশিত মডিউল প্যাটার্নটি একবার দেখে নেওয়া যাক।
প্রকাশিত মডিউল প্যাটার্নটি এমনভাবে প্রকাশিত হয়েছিল যেহেতু হিলম্যান যখন আমরা অন্যের কাছ থেকে একটি জনসাধারণের পদ্ধতিতে কল করতে বা পাবলিক ভেরিয়েবলগুলি অ্যাক্সেস করতে চেয়েছিলাম তখন তাকে মূল অবজেক্টের নামটি পুনরাবৃত্তি করতে হয়েছিল হতাশায় হতাশ হয়ে পড়েছিলেন H তিনি পরিবর্তন করতে গিয়ে মডিউল প্যাটার্নের প্রয়োজনীয়তাও অপছন্দ করেন ked তিনি যে জিনিসগুলি জনসমক্ষে প্রচার করতে চেয়েছিলেন তার জন্য আক্ষরিক স্বরলিপি আপত্তি জানাতে।
তাঁর প্রচেষ্টার ফলাফল ছিল একটি আপডেট প্যাটার্ন যেখানে আমরা কেবল আমাদের সমস্ত কার্য এবং ভেরিয়েবলগুলি ব্যক্তিগত স্কোপগুলিতে সংজ্ঞায়িত করব এবং আমরা জনসাধারণ হিসাবে প্রকাশ করতে চাইলে ব্যক্তিগত কার্যকারিতাটির সাথে পয়েন্টার সহ একটি বেনামী বস্তুটি ফিরিয়ে দেব।
প্রকাশিত মডিউল প্যাটার্নটি কীভাবে ব্যবহার করবেন তার একটি উদাহরণ নীচে পাওয়া যাবে can
var myRevealingModule = (function () {
var privateVar = "Ben Cherry",
publicVar = "Hey there!";
function privateFunction() {
console.log( "Name:" + privateVar );
}
function publicSetName( strName ) {
privateVar = strName;
}
function publicGetName() {
privateFunction();
}
// Reveal public pointers to
// private functions and properties
return {
setName: publicSetName,
greeting: publicVar,
getName: publicGetName
};
})();
myRevealingModule.setName( "Paul Kinlan" );
সুবিধাদি
এই নিদর্শনটি আমাদের স্ক্রিপ্টগুলির বাক্য গঠনটিকে আরও সামঞ্জস্যপূর্ণ হতে দেয়। এটি মডিউলটির শেষে এটি আরও স্পষ্ট করে তোলে যে আমাদের কোন ফাংশন এবং ভেরিয়েবলগুলি সর্বজনীনভাবে অ্যাক্সেস করতে পারে যা পাঠযোগ্যতা হ্রাস করে।
অসুবিধেও
এই প্যাটার্নটির একটি অসুবিধা হ'ল যদি কোনও ব্যক্তিগত ফাংশন কোনও পাবলিক ফাংশনকে বোঝায় তবে প্যাচ প্রয়োজনীয় হলে সেই পাবলিক ফাংশনটি ওভাররাইড করা যাবে না। এটি হ'ল কারণ ব্যক্তিগত ফাংশনটি বেসরকারী প্রয়োগের কথা উল্লেখ করে চলবে এবং প্যাটার্নটি কেবলমাত্র ফাংশনের ক্ষেত্রে জনসাধারণের জন্য প্রযোজ্য নয়।
প্রাইভেট ভেরিয়েবলগুলি উল্লেখ করে এমন পাবলিক অবজেক্টের সদস্যরা উপরের নো-প্যাচ বিধি নোটেরও অধীন।