উত্তর:
অ্যাডাপ্টার একটি প্রদত্ত শ্রেণি / অবজেক্টটিকে একটি নতুন ইন্টারফেসে অভিযোজিত করে। প্রাক্তনের ক্ষেত্রে, একাধিক উত্তরাধিকার সাধারণত নিযুক্ত হয়। পরবর্তী ক্ষেত্রে, অবজেক্টটি একটি আনুষঙ্গিক অ্যাডাপ্টার বস্তু দ্বারা আবৃত এবং চারপাশে পাস করা হয়। আমরা এখানে যে সমস্যাটি সমাধান করছি তা হ'ল নন-সামঞ্জস্যপূর্ণ ইন্টারফেস ।
ফেকাডে কার্যকারিতার জটিল সেটগুলির সহজ গেটওয়ের মতো। আপনার ক্লায়েন্টদের কম চিন্তা করার জন্য আপনি একটি কালো বাক্স তৈরি করেন অর্থাত্ ইন্টারফেসগুলি সহজ করুন ।
প্রক্সি প্রক্সিড-ক্লাসের জন্য একই ইন্টারফেস সরবরাহ করে এবং সাধারণত নিজস্বভাবে কিছু গৃহকর্ম সংরক্ষণ করে। (সুতরাং কোনও ভারী অবজেক্টের একাধিক অনুলিপি তৈরির পরিবর্তে X
আপনি একটি লাইটওয়েট প্রক্সিটির অনুলিপি তৈরি করেন P
যা ফলস্বরূপ X
আপনার কলগুলি পরিচালনা করে এবং এটি প্রয়োজনীয় হিসাবে অনুবাদ করে ।) আপনি ভারী এবং / অথবা জটিল কোনও বিষয় পরিচালনা না করে ক্লায়েন্টের সমস্যা সমাধান করছেন ।
প্রসাধক আপনার বস্তু আরও বারূদ যোগ করার জন্য ব্যবহার করা হয় (নোট মেয়াদ বস্তু - আপনি সাধারণত সাজাইয়া রানটাইম এ পরিবর্তনশীল বস্তু)। আপনি অবজেক্টের বিদ্যমান ইন্টারফেসগুলি লুকিয়ে / ক্ষতিগ্রস্থ করবেন না তবে রানটাইম এ কেবল প্রসারিত করবেন ।
এখন যেহেতু আপনি ডেকোরেটর জড়িত রয়েছেন তা সম্ভবত আপনি জানতে চাইবেন যে শব্দ শব্দের উপর জোর দেওয়া - কিছু ভাষা (যেমন জাভা) কেবল ভার্চুয়াল উত্তরাধিকারকে (যেমন সি ++ এর মতো একাধিক উত্তরাধিকার) আপনাকে এটি সম্পাদন করতে দেয় না কেন? সংকলন সময়।
যেহেতু আমরা একাধিক উত্তরাধিকার (এবং ভয়ঙ্কর হীরা) এ টেনে নিয়েছি আপনি মিক্সিনগুলি সন্ধান করবেন - যেগুলি একাধিক উত্তরাধিকারের সমস্যাগুলি পেতে ইন্টারফেসগুলিকে রৈখিক শৃঙ্খলিত করার আদেশ দেওয়া হয় । যাইহোক, মিক্সিনগুলি এটি ভালভাবে মিশে না। এবং আমরা বৈশিষ্ট্যগুলি সহ শেষ করি - হ্যাঁ আচরণের এই স্টেটলেস ছোট্ট ব্লবগুলি আপনি সি ++ তে টেম্পলেট প্যারামিটারে সর্বদা পপ-আপ দেখেন। বৈশিষ্ট্যগুলি একাধিক উত্তরাধিকার হিসাবে না যাওয়ার জন্য বা শৃঙ্খলাবদ্ধ হওয়ার নির্দেশ না দিয়ে মার্জিত পদ্ধতিতে আচরণের ক্ষয় এবং ক্ষয়ের সমস্যাগুলি সমাধান করার চেষ্টা করে।
অট্টালিকার সদরের বহির্ভাগ
আপনি কোনও মুখোমুখি ব্যবহার করতে পারেন, উদাহরণস্বরূপ, কোনও API এ কল করা সহজ easier দূরবর্তী সম্মুখের এই উদাহরণটি একবার দেখুন । এখানে ধারণাটি হ'ল সার্ভারে কোডটির সম্পূর্ণ প্রয়োগটি ক্লায়েন্টের থেকে দূরে লুকিয়ে রয়েছে। ক্লায়েন্টটি 1 টি এপিআই পদ্ধতি কল করে যা ঘুরেফিরে সার্ভারে 1 বা একাধিক এপিআই কল করতে পারে।
এডাপটার
এর একটি ভাল উদাহরণ উইকিপিডিয়ায়, এখানে পাওয়া যাবে । একটি ক্লায়েন্ট অবজেক্ট Source
অন্য কোনও অবজেক্টে কোনও পদ্ধতিতে কল করতে চাইবে Target
, তবে সেই অন্য অবজেক্টের ইন্টারফেস ক্লায়েন্টের প্রত্যাশার চেয়ে আলাদা।
অ্যাডাপ্টার বস্তু লিখুন।
এটি Source
অবজেক্ট থেকে কল নিতে পারে এবং পর্দার আড়ালে যে Target
পদ্ধতিটি ব্যবহার করা উচিত তা কল করতে পারে।
Source->CallMethodAOnTarget() ---< Adaptor.CallMethodAOnTarget() this calls ---> Target.MethodWithDifferentSignatureAndName(int i)
প্রক্সি হিসাবে, আমার কাছে এই নকশা ধরণের কোনও অভিজ্ঞতা নেই।