এ StringBuilder
একজন বিল্ডার প্যাটার্নের অনুরূপ, তবে এই নকশার প্যাটার্নের জিওএফ বর্ণনার সাথে খুব বেশি ভাগ করে না। ডিজাইনের প্যাটার্নটির মূল পয়েন্টটি ছিল
একটি জটিল অবজেক্টের নির্মাণকে এর প্রতিনিধিত্ব থেকে পৃথক করুন যাতে একই নির্মাণ প্রক্রিয়াটি বিভিন্ন উপস্থাপনা তৈরি করতে পারে।
- ডিজাইনের প্যাটার্নগুলি থেকে গামা, হেলম, জনসন, ভ্লিসাইডস।
(দ্রষ্টব্য: "জটিল" এর অর্থ মূলত "একাধিক অংশের সমন্বয়ে গঠিত", প্রয়োজনীয়ভাবে "জটিল" বা "কঠিন" নয়)
"বিভিন্ন উপস্থাপনা" এখানে মূল কী। যেমন এই নির্মাণ প্রক্রিয়াটি ধরে নেওয়া:
interface ArticleBuilder {
void addTitle(String title);
void addParagraph(String paragraph);
}
void createArticle(ArticeBuilder articleBuilder) {
articleBuilder.addTitle("Is String Builder an application of ...");
articleBuilder.addParagraph("Is the Builder Pattern restricted...");
articleBuilder.addParagraph("The StringBuilder class ...");
}
আমরা কংক্রিট বাস্তবায়ন সরবরাহ করা হয় তার উপর নির্ভর করে আমরা একটি HtmlDocument
বা একটি TexDocument
বা তার সাথে শেষ করতে পারি MarkdownDocument
:
class HtmlDocumentBuilder implements ArticleBuilder {
...
HtmlDocument getResult();
}
HtmlDocumentBuilder b = new HtmlDocumentBuilder();
createArticle(b);
HtmlDocument dom = b.getResult();
সুতরাং বিল্ডার প্যাটার্নের একটি কেন্দ্রীয় পয়েন্ট হ'ল বহুমুখীতা । ডিজাইনের প্যাটার্নস বইটি এই প্যাটার্নটিকে অ্যাবস্ট্রাক্ট ফ্যাক্টরীর সাথে তুলনা করে:
অ্যাবস্ট্রাক্ট ফ্যাক্টরি বিল্ডারের অনুরূপ যাতে এটি খুব জটিল বস্তুও তৈরি করতে পারে। প্রাথমিক পার্থক্য হ'ল বিল্ডার প্যাটার্নটি ধাপে ধাপে একটি জটিল অবজেক্ট তৈরির দিকে মনোনিবেশ করে। […] নির্মাতা চূড়ান্ত পদক্ষেপ হিসাবে পণ্যটি ফেরত দেয়, তবে অ্যাবস্ট্রাক্ট ফ্যাক্টরি সম্পর্কিত হিসাবে, পণ্যটি তত্ক্ষণাত্ ফিরে আসে।
- ডিজাইনের প্যাটার্নগুলি থেকে গামা, হেলম, জনসন, ভ্লিসাইডস।
এই ধাপে ধাপে দিকটি পরে বিল্ডার প্যাটার্নের আরও জনপ্রিয় দিক হয়ে উঠেছে, যাতে সাধারণভাবে পার্লারেন্সে বিল্ডার প্যাটার্নটি এইভাবে বোঝা যায়:
কোনও বস্তুর নির্মাণকে একাধিক পদক্ষেপে বিভক্ত করুন। এটি আমাদের নামী যুক্তি বা alচ্ছিক পরামিতি এমনকি এমন ভাষাগুলিতেও ব্যবহার করতে দেয় যা এই বৈশিষ্ট্যগুলিকে সমর্থন করে না।
উইকিপিডিয়া এই ধরণের বর্ণনা দেয়:
বিল্ডার প্যাটার্ন হ'ল একটি অবজেক্ট তৈরি সফ্টওয়্যার ডিজাইনের ধরণ। অ্যাবস্ট্রাক্ট ফ্যাক্টরি প্যাটার্ন এবং কারখানার পদ্ধতি প্যাটার্নের বিপরীতে যার উদ্দেশ্য বহুবর্ষ সক্ষম করতে পারে, বিল্ডার প্যাটার্নের উদ্দেশ্যটি দূরবীন নির্মাণকারী বিরোধী-প্যাটার্ন [উদ্ধৃতি আবশ্যক] এর সমাধান খুঁজে বের করা । [...]
বিল্ডার প্যাটার্নটির আরও একটি সুবিধা রয়েছে। এটি ফ্ল্যাট ডেটা (এইচটিএমএল কোড, এসকিউএল কোয়েরি, এক্স.509 শংসাপত্র ...) সম্বলিত অবজেক্টগুলির জন্য ব্যবহার করা যেতে পারে, অর্থাত এটি সহজেই সম্পাদনা করা যায় না এমন ডেটা। এই ধরণের ডেটা ধাপে ধাপে সম্পাদনা করা যায় না এবং একবারে সম্পাদনা করতে হবে। এই জাতীয় কোনও অবজেক্ট তৈরির সর্বোত্তম উপায় হ'ল বিল্ডার শ্রেণি ব্যবহার করা। [হদফ ঘ]
- থেকে নির্মাতা প্যাটার্ন উপর উইকিপিডিয়া , বিভিন্ন অবদানকারী দ্বারা।
সুতরাং আমরা যেমন দেখতে পাচ্ছি, এই নামটি কী ধরণের নাম বোঝায় সে সম্পর্কে সত্যই সাধারণ ধারণা নেই এবং কিছু পয়েন্টে বিভিন্ন সংজ্ঞা এমনকি একে অপরের বিরোধিতা করে (যেমন বিল্ডারদের জন্য পলিমারফিজমের প্রাসঙ্গিকতা সম্পর্কিত)।
StringBuilder
প্যাটার্নটির বিভিন্ন ব্যাখ্যা সহ একমাত্র সাধারণ সম্পত্তি হ'ল পণ্যটি একবারে না গিয়ে ধাপে ধাপে তৈরি হয়। এটি নকশার প্যাটার্নের জিওএফ সংজ্ঞাটি কঠোরভাবে পড়ার সাথে মিলিত হয় না তবে দয়া করে নোট করুন যে নকশার নিদর্শনগুলি যোগাযোগের সুবিধার্থে লন্ডিত ধারণা। আমি StringBuilder
বিল্ডার প্যাটার্নের উদাহরণ বলতে চাইব , যদিও এটি অ্যাটিকালিকাল হোক - জাভাতে সেই কাঠামোর মূল কারণ হ'ল অপরিবর্তনীয় স্ট্রিংগুলির উপস্থিতিতে পারফরম্যান্ট কনটেন্টেশন, তবে কিছু আকর্ষণীয় অবজেক্ট-ওরিয়েন্টেড ডিজাইন নয়।