আমার এই বিষয়ে।
চারটি নিদর্শনগুলির মধ্যে প্রচুর পরিমাণে মিল রয়েছে, চারটিই মাঝে মাঝে অনানুষ্ঠানিকভাবে মোড়ক, বা মোড়কের ধরণ বলে। সমস্ত ব্যবহার রচনা, মোড়ানো বিষয় এবং কোনও সময়ে নির্বাহের কার্য নির্ধারণ করে, একটি পদ্ধতি কলকে অন্যটিতে ম্যাপিং করে। তারা ক্লায়েন্টকে কোনও আলাদা অবজেক্ট তৈরি করতে এবং সমস্ত প্রাসঙ্গিক ডেটা অনুলিপি করার প্রয়োজনীয়তা ছাড়ায়। যদি বুদ্ধিমানের সাথে ব্যবহার করা হয় তবে এগুলি মেমরি এবং প্রসেসর সংরক্ষণ করে।
আলগা সংযোগ প্রচারের মাধ্যমে তারা একবারে স্থিতিশীল কোডটি অনিবার্য পরিবর্তনগুলিতে কম উন্মুক্ত করে এবং সহ বিকাশকারীদের জন্য আরও ভাল পঠনযোগ্য হয়।
এডাপটার
অ্যাডাপ্টার একটি পৃথক ইন্টারফেসে বিষয় (অ্যাডাপ্টি) অ্যাডাপ্ট করে। এইভাবে আমরা নামমাত্র বিভিন্ন ধরণের সংকলনে অবজেক্ট যুক্ত করতে পারি।
অ্যাডাপ্টার কেবল ক্লায়েন্টের কাছে প্রাসঙ্গিক পদ্ধতি প্রকাশ করে, অন্য সকলকে সীমাবদ্ধ করতে পারে, নির্দিষ্ট প্রসঙ্গে যেমন বাইরের লাইব্রেরিটি অভিযোজিত করার জন্য ব্যবহারের অভিপ্রায় প্রকাশ করে, এটি আমাদের অ্যাপ্লিকেশন প্রয়োজনীয়তার দিকে কম সাধারণ প্রদর্শিত এবং আরও বেশি দৃষ্টি নিবদ্ধ করে। অ্যাডাপ্টারগুলি আমাদের কোডের পঠনযোগ্যতা এবং স্ব বিবরণ বাড়ায়।
অ্যাডাপ্টারগুলি অন্য দলগুলির অস্থির কোড থেকে একটি দলকে রক্ষা করে; অফশোর দলগুলির সাথে ডিল করার সময় একটি জীবন রক্ষাকারী সরঞ্জাম ;-)
উল্লেখযোগ্য উদ্দেশ্য হ'ল বিষয়শ্রেণীটিকে টীকা দেওয়ার কারণে বাধা দেওয়া। টীকাগুলির উপর ভিত্তি করে অনেকগুলি ফ্রেমওয়ার্ক সহ এটি তখনকার চেয়ে আরও বেশি গুরুত্বপূর্ণ ব্যবহারে পরিণত হয়।
অ্যাডাপ্টার কেবলমাত্র একক উত্তরাধিকারের জাভা সীমাবদ্ধতা পেতে সহায়তা করে। এটি এক খামের অধীনে বেশ কয়েকটি অ্যাডাপিটিকে একত্রে একাধিক উত্তরাধিকারের ছাপ দিতে পারে।
কোড অনুযায়ী, অ্যাডাপ্টারটি "পাতলা"। এটি অ্যাডিপিটি ক্লাসে খুব বেশি কোড যুক্ত করা উচিত নয়, কেবল এই জাতীয় কল করার জন্য অ্যাডাপি পদ্ধতি এবং মাঝে মাঝে ডেটা রূপান্তরকে কল করা ছাড়াও।
জেডিকে বা বেসিক লাইব্রেরিতে খুব ভাল অ্যাডাপ্টারের উদাহরণ নেই। অ্যাপ্লিকেশন বিকাশকারীরা অ্যাপ্লিকেশন নির্দিষ্ট ইন্টারফেসের সাথে গ্রন্থাগারগুলিকে অভিযোজিত করতে অ্যাডাপ্টার তৈরি করে।
প্রসাধক
সাজসজ্জাকারী কেবল ডেলিগেটই করেন না, কেবল একটি পদ্ধতিকে অন্যটিতে মানচিত্র করে না, তারা আরও কিছু করেন, কিছু বিষয় পদ্ধতির আচরণ পরিবর্তন করে, এটি সিদ্ধান্ত নিতে পারে সাবজেক্ট মেথডকে একেবারেই না বলার জন্য, কোনও ভিন্ন অবজেক্টকে, কোনও সহায়ক সামগ্রীর প্রতিনিধিত্ব করে।
আলংকারকগণ সাধারণত মোড়কযুক্ত আইটেমে লগিং, এনক্রিপশন, ফর্ম্যাটিং, বা বিষয়কে সংকোচনের ক্ষেত্রে (স্বচ্ছভাবে) কার্যকারিতা যুক্ত করেন। এই নতুন কার্যকারিতা অনেক নতুন কোড আনতে পারে। সুতরাং, সাজসজ্জা সাধারণত অনেকগুলি "ফ্যাটার" তারপরে অ্যাডাপ্টারগুলি।
সাজসজ্জারকে অবশ্যই সাবজেক্টের ইন্টারফেসের একটি উপ-শ্রেণি হতে হবে। এগুলি এর বিষয়গুলির পরিবর্তে স্বচ্ছভাবে ব্যবহার করা যেতে পারে। বাফার্ডআউটপুট স্ট্রিম দেখুন, এটি এখনও আউটপুট স্ট্রিম এবং এটি হিসাবে ব্যবহার করা যেতে পারে। এটি অ্যাডাপ্টারগুলির থেকে একটি বড় প্রযুক্তিগত পার্থক্য।
পুরো সাজসজ্জার পরিবারের পাঠ্য বইয়ের উদাহরণগুলি জেডিকে সহজেই রয়েছে - জাভা আইও। মত সব শ্রেণীর BufferedOutputStream , FilterOutputStream এবং ObjectOutputStream এর টেকনিক হয় OutputStream । এগুলি পেঁয়াজ স্তরযুক্ত হতে পারে, যেখানে একটি করে সাজসজ্জা সজ্জিত করা হয়, আরও কার্যকারিতা যুক্ত করে।
প্রক্সি
প্রক্সি একটি সাধারণ মোড়ক নয়। মোড়কযুক্ত বস্তু, প্রক্সি বিষয়, প্রক্সি তৈরির সময় উপস্থিত থাকতে পারে। প্রক্সি প্রায়শই এটি অভ্যন্তরীণভাবে তৈরি করে। এটি চাহিদার ভিত্তিতে তৈরি হওয়া ভারী বস্তু হতে পারে, বা এটি বিভিন্ন জেভিএম বা বিভিন্ন নেটওয়ার্ক নোডের রিমোট অবজেক্ট এবং এমনকি জাভা-বিহীন অবজেক্ট, দেশীয় কোডের একটি উপাদান। এটি কোনও প্রয়োজনে মোড়ানো বা অন্য কোনও বস্তুর কাছে অর্পণ করার দরকার নেই।
সর্বাধিক সাধারণ উদাহরণগুলি হ'ল দূরবর্তী প্রক্সি, ভারী অবজেক্টের সূচনা এবং অ্যাক্সেস প্রক্সি।
রিমোট প্রক্সি - বিষয়গুলি রিমোট সার্ভারে, বিভিন্ন জেভিএম বা এমনকি জাভা সিস্টেমে নেই। প্রক্সি ক্লায়েন্টকে অন্তর্নিহিত প্রযুক্তির সংস্পর্শ থেকে রক্ষা করে আরএমআই / আরইএসটি / এসওএপি কলগুলিতে বা যা প্রয়োজন প্রয়োজনে মেথড কলগুলি অনুবাদ করে।
অলস লোড প্রক্সি - কেবলমাত্র প্রথম ব্যবহার বা প্রথম নিবিড় ব্যবহারের পুরোপুরি বস্তুর সূচনা করুন।
অ্যাক্সেস প্রক্সি - সাবজেক্টে অ্যাক্সেস নিয়ন্ত্রণ করুন।
অট্টালিকার সদরের বহির্ভাগ
ফ্যাসাদ ন্যূনতম জ্ঞানের নকশার নীতি (ডেমিটারের আইন) এর সাথে ঘনিষ্ঠভাবে জড়িত। মুখোমুখি অ্যাডাপ্টারের সাথে খুব মিল। তারা উভয়ই মোড়ানো, তারা উভয়ই একটির সাথে অন্য একটি বস্তুর মানচিত্র তৈরি করে তবে উদ্দেশ্যতে তারা পৃথক হয়। ফেকাড একটি জটিল জটিল কাঠামোকে জটিল করে তোলে, জটিল অবজেক্ট গ্রাফ, জটিল কাঠামোটিতে অ্যাক্সেসকে সহজ করে তোলে।
সম্মুখভাগ একটি জটিল কাঠামো মোড়ানো, এটিতে একটি ফ্ল্যাট ইন্টারফেস সরবরাহ করে। এটি ক্লায়েন্ট অবজেক্টকে বিষয় কাঠামোর অভ্যন্তরীণ সম্পর্কের সংস্পর্শে আনা থেকে বাধা দেয় তাই আলগা সংযোগ প্রচার করে।
সেতু
অ্যাডাপ্টার প্যাটার্নের আরও জটিল বৈকল্পিক যেখানে কেবল প্রয়োগের ক্ষেত্রেই পরিবর্তন হয় না তবে বিমূর্ততাও রয়েছে। এটি প্রতিনিধিদলে আরও একটি উদ্বিগ্নতা যুক্ত করে। অতিরিক্ত প্রতিনিধি হলেন সেতু। এটি অ্যাডাপ্টারটিকে অ্যাডাপ্টিং ইন্টারফেস থেকেও ডেস্পল করে। এটি অন্যান্য মোড়কের ধরণগুলির তুলনায় জটিলতা আরও বাড়ায়, তাই যত্ন সহ প্রয়োগ করুন।
নির্মাতাদের মধ্যে পার্থক্য
প্যাটার্ন পার্থক্যগুলি তাদের নির্মাতাদের দিকে তাকানোর সময়ও সুস্পষ্ট।
প্রক্সি কোনও বিদ্যমান অবজেক্টকে মোড়ানো করছে না। কনস্ট্রাক্টরের কোনও বিষয় নেই।
ডেকোরেটর এবং অ্যাডাপ্টার ইতিমধ্যে বিদ্যমান বস্তুটি মোড়ানো করে এবং এগুলি সাধারণত
কন্সট্রাক্টরে সরবরাহ করা হয়।
ফ্যাসেড কনস্ট্রাক্টর পুরো অবজেক্ট গ্রাফের মূল উপাদানটি নেয়, অন্যথায় এটি অ্যাডাপ্টারের মতোই লাগে।
বাস্তব জীবনের উদাহরণ - জেএক্সবি মার্শালিং অ্যাডাপ্টার । এই অ্যাডাপ্টারের উদ্দেশ্যটি হ'ল একটি সহজ সমতল শ্রেণীর ম্যাপিং করা হয় আরও জটিল কাঠামোতে বাহ্যিকভাবে প্রয়োজনীয় এবং অতিরিক্ত টীকা সহ "দূষণকারী" বিষয় শ্রেণি রোধ করা।