7 অত্যন্ত গুরুত্বপূর্ণ সফ্টওয়্যার ডিজাইনের প্যাটার্নস

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

ডিজাইন প্যাটার্নস কেন?

ডিজাইন প্যাটার্নগুলি সাম্প্রতিক সময়ে প্রোগ্রামিং জগতে কিছুটা বিতর্কের একটি বিষয় হয়ে দাঁড়িয়েছে, মূলত তাদের উপলব্ধি "অত্যধিক ব্যবহারের" কারণে কোডটি পৌঁছেছে যা বুঝতে এবং পরিচালনা করা আরও কঠিন হতে পারে।

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

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

বলা হচ্ছে যে, প্রতিটি প্যাটার্নের পিছনে কীভাবে এবং কীভাবে বিকাশকারীও বুঝতে পারে তা নিশ্চিত করা একটি গুরুত্বপূর্ণ সতর্কতা।

আরও অগ্রগতি ব্যতীত (বেশিরভাগ থেকে কমপক্ষে গুরুত্বের দিক থেকে):

সর্বাধিক গুরুত্বপূর্ণ নকশার প্যাটার্নস

  1. একক বস্তু

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

শ্রেণীর কোনও অবজেক্ট শুরু করা তুচ্ছ - তবে আমরা কীভাবে নিশ্চিত করব যে কেবলমাত্র একটি বস্তু কখনও তৈরি হয়েছিল? উত্তরটি হল, আমরা যে ক্লাসটিকে সিঙ্গলটন হিসাবে সংজ্ঞায়িত করতে চাইছি তার নির্মাণকারীকে ‘ব্যক্তিগত’ করা। এইভাবে, ক্লাসের সদস্যরা কেবলমাত্র প্রাইভেট কনস্ট্রাক্টর অ্যাক্সেস করতে পারবেন এবং অন্য কেউ নেই।

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

2. কারখানার পদ্ধতি

একটি সাধারণ কারখানা পণ্য উত্পাদন করে; একটি সফ্টওয়্যার কারখানা বস্তু উত্পাদন করে। এবং কেবল এটিই নয় - এটি তৈরি করা অবজেক্টের সঠিক শ্রেণি নির্দিষ্ট না করেই তা করে। এটি সম্পাদন করতে অবজেক্টগুলি কনস্ট্রাক্টরকে কল না করে কারখানার পদ্ধতিতে কল করে তৈরি করা হয়।

সাধারণত, জাভাতে অবজেক্ট তৈরির কাজটি এরকমভাবে ঘটে:

সোমারক্লাস কিছুক্লাসঅবজেক্ট = নতুন সামারক্লাস ();

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

3. কৌশল

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

4. পর্যবেক্ষক

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

সরলতার স্বার্থে, আপনি যখন টুইটারে কাউকে অনুসরণ করেন তখন কী ঘটে তা ভেবে দেখুন। আপনি টুইটারকে মূলত আপনাকে (পর্যবেক্ষক) অনুসরণ করা ব্যক্তির (বিষয়) টুইটার আপডেটগুলি প্রেরণের জন্য জিজ্ঞাসা করছেন। প্যাটার্নটিতে দু'জন অভিনেতা গঠিত, পর্যবেক্ষক যিনি আপডেটগুলিতে আগ্রহী এবং যে বিষয়গুলি আপডেটগুলি উত্পন্ন করে।

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

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

5. নির্মাতা

নামটি থেকে বোঝা যায়, কোনও বিল্ডার প্যাটার্নটি অবজেক্ট তৈরি করতে ব্যবহৃত হয়। কখনও কখনও, আমরা যে বস্তুগুলি তৈরি করি তা জটিল হতে পারে, বেশ কয়েকটি উপ-বস্তুর সমন্বয়ে তৈরি হতে পারে বা একটি বিস্তৃত নির্মাণ প্রক্রিয়া প্রয়োজন। জটিল ধরণের তৈরির অনুশীলনটি নির্মাতা প্যাটার্নটি ব্যবহার করে সহজ করা যায়। একটি যৌগিক বা একটি সামগ্রিক অবজেক্ট হ'ল বিল্ডার সাধারণত যা তৈরি করে।

মূল বিবেচনা: বিল্ডার প্যাটার্নটি 'অ্যাবস্ট্রাক্ট ফ্যাক্টরি' প্যাটার্নের অনুরূপ মনে হতে পারে তবে একটি পার্থক্য হ'ল বিল্ডার প্যাটার্নটি ধাপে ধাপে একটি অবজেক্ট তৈরি করে যেখানে অ্যাবস্ট্রাক্ট ফ্যাক্টরি প্যাটার্নটি বস্তুকে একসাথে ফিরিয়ে দেয়।

6. অ্যাডাপ্টার

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

আপনার যদি দুটি অ্যাপ্লিকেশন থাকে, যার মধ্যে একটি স্পিটিং আউটপুট এক্সএমএল হিসাবে অন্যটির সাথে জেএসওএন ইনপুট প্রয়োজন হয়, তবে এগুলি নির্বিঘ্নে কাজ করার জন্য আপনার দুজনের মধ্যে একটি অ্যাডাপ্টারের প্রয়োজন হবে।

7. রাষ্ট্র

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

শিখতে চান?

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

কোর্সটি গ্যাং অফ ফোরের জনপ্রিয় বইয়ের উপর ভিত্তি করে তৈরি হয়েছে, তবে একটি ইন্টারেক্টিভ, সহজে-ডাইজেস্ট ফর্ম্যাটে উপস্থাপিত হয়েছে। আপনি বই থেকে 23 টি বিখ্যাত নকশার নিদর্শন ইন্টারেক্টিভভাবে আয়ত্ত করতে পারবেন, 3 টি মূল নকশা প্যাটার্ন ধরণের (ক্রিয়েটিভাল, কাঠামোগত এবং আচরণগত) সঠিক অ্যাপ্লিকেশনগুলি শিখবেন এবং এই নকশাগুলিটিকে আপনার নিজস্ব প্রকল্পগুলিতে অন্তর্ভুক্ত করতে শিখবেন।

এখনই এটা দেখে নাও.

মূলত Blog.educative.io এ নভেম্বর 7, 2018 এ প্রকাশিত।