মুখোমুখি, প্রক্সি, অ্যাডাপ্টার এবং সজ্জা নকশা নকশার মধ্যে পার্থক্য? [বন্ধ]


135

ফেকাড, প্রক্সি, অ্যাডাপ্টার এবং ডেকোরেটার ডিজাইনের ধরণগুলির মধ্যে পার্থক্য কী?

আমি কখনও পরিষ্কার ব্যাখ্যা পড়িনি, তোমার কী?



@ কেভেনকোয়া অন্য প্রশ্নটি কেবল প্রক্সি এবং
ডেকরেটার

2
কিছু বদ্ধ প্রশ্ন হিসাবে নিজেকে এত দরকারী হিসাবে অবিশ্বাস্য।
লুক

উত্তর:


285

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

ফেকাডে কার্যকারিতার জটিল সেটগুলির সহজ গেটওয়ের মতো। আপনার ক্লায়েন্টদের কম চিন্তা করার জন্য আপনি একটি কালো বাক্স তৈরি করেন অর্থাত্ ইন্টারফেসগুলি সহজ করুন

প্রক্সি প্রক্সিড-ক্লাসের জন্য একই ইন্টারফেস সরবরাহ করে এবং সাধারণত নিজস্বভাবে কিছু গৃহকর্ম সংরক্ষণ করে। (সুতরাং কোনও ভারী অবজেক্টের একাধিক অনুলিপি তৈরির পরিবর্তে Xআপনি একটি লাইটওয়েট প্রক্সিটির অনুলিপি তৈরি করেন Pযা ফলস্বরূপ Xআপনার কলগুলি পরিচালনা করে এবং এটি প্রয়োজনীয় হিসাবে অনুবাদ করে ।) আপনি ভারী এবং / অথবা জটিল কোনও বিষয় পরিচালনা না করে ক্লায়েন্টের সমস্যা সমাধান করছেন ।

প্রসাধক আপনার বস্তু আরও বারূদ যোগ করার জন্য ব্যবহার করা হয় (নোট মেয়াদ বস্তু - আপনি সাধারণত সাজাইয়া রানটাইম এ পরিবর্তনশীল বস্তু)। আপনি অবজেক্টের বিদ্যমান ইন্টারফেসগুলি লুকিয়ে / ক্ষতিগ্রস্থ করবেন না তবে রানটাইম এ কেবল প্রসারিত করবেন

এখন যেহেতু আপনি ডেকোরেটর জড়িত রয়েছেন তা সম্ভবত আপনি জানতে চাইবেন যে শব্দ শব্দের উপর জোর দেওয়া - কিছু ভাষা (যেমন জাভা) কেবল ভার্চুয়াল উত্তরাধিকারকে (যেমন সি ++ এর মতো একাধিক উত্তরাধিকার) আপনাকে এটি সম্পাদন করতে দেয় না কেন? সংকলন সময়।

যেহেতু আমরা একাধিক উত্তরাধিকার (এবং ভয়ঙ্কর হীরা) এ টেনে নিয়েছি আপনি মিক্সিনগুলি সন্ধান করবেন - যেগুলি একাধিক উত্তরাধিকারের সমস্যাগুলি পেতে ইন্টারফেসগুলিকে রৈখিক শৃঙ্খলিত করার আদেশ দেওয়া হয় । যাইহোক, মিক্সিনগুলি এটি ভালভাবে মিশে না। এবং আমরা বৈশিষ্ট্যগুলি সহ শেষ করি - হ্যাঁ আচরণের এই স্টেটলেস ছোট্ট ব্লবগুলি আপনি সি ++ তে টেম্পলেট প্যারামিটারে সর্বদা পপ-আপ দেখেন। বৈশিষ্ট্যগুলি একাধিক উত্তরাধিকার হিসাবে না যাওয়ার জন্য বা শৃঙ্খলাবদ্ধ হওয়ার নির্দেশ না দিয়ে মার্জিত পদ্ধতিতে আচরণের ক্ষয় এবং ক্ষয়ের সমস্যাগুলি সমাধান করার চেষ্টা করে।


1
আছে HTH! আমি খুব বেশি অস্পষ্ট না হয়ে যতটা পারি তার চেষ্টা করার চেষ্টা করেছি। আরও ভাল করতে আমার অক্ষমতা ক্ষমা করুন। আমি একাকী বৈশিষ্ট্যগুলিতে (পিএইচডি গবেষণামূলক) কাগজপত্র পড়েছি। সুতরাং আমার জ্ঞান বরং সীমাবদ্ধ এবং আমি এই স্থানের সমস্ত
নিদানে

আপনি মিশ্রণ এবং বৈশিষ্ট্য সম্পর্কে ভবিষ্যতের কোনও প্রশ্নের প্রত্যাশা করেছিলেন কিন্তু আমি এখনও সেগুলি দেখিনি!
ব্যবহারকারী310291

1
প্রথম তিনটির জন্য (উইকিপিডিয়া মাধ্যমে) একটি ভাল তুলনা লিংক ( ডেকোরিটারটি
Liviu

@ লিভিউ আপনার লিঙ্কটি মারা গেছে। আমি তোমাদের মূলত ইশারা ছিল অনুমান সেখানে কিন্তু বিষয়বস্তু এখন একটি লগইন পিছনে মনে করা হয়।
জোনাথন এইচ

@ শেলজাহান লিংক আপডেট হয়েছে: পি: প্রথম তিনটির জন্য একটি ভাল তুলনা লিংক (উইকিপিডিয়া মাধ্যমে) (ডেকোরেটরটি একেবারেই আলাদা) নোটবজেক্টিভস (পাঠ্য পুনরুদ্ধার করুন, "বেটউইম" দেখুন: "ক্লাসে আমি যে ঘন ঘন ঘন ঘন প্রশ্নগুলি পাই সেগুলি হ'ল" কি পার্থক্য বেটউইম অ্যাডাপ্টার, প্রক্সি এবং মুখোমুখি? তারা আসলে আমার কাছে একই রকম মনে হয় "।)
লিভিউ

16

অট্টালিকার সদরের বহির্ভাগ

আপনি কোনও মুখোমুখি ব্যবহার করতে পারেন, উদাহরণস্বরূপ, কোনও API এ কল করা সহজ easier দূরবর্তী সম্মুখের এই উদাহরণটি একবার দেখুন । এখানে ধারণাটি হ'ল সার্ভারে কোডটির সম্পূর্ণ প্রয়োগটি ক্লায়েন্টের থেকে দূরে লুকিয়ে রয়েছে। ক্লায়েন্টটি 1 টি এপিআই পদ্ধতি কল করে যা ঘুরেফিরে সার্ভারে 1 বা একাধিক এপিআই কল করতে পারে।

এডাপটার

এর একটি ভাল উদাহরণ উইকিপিডিয়ায়, এখানে পাওয়া যাবে । একটি ক্লায়েন্ট অবজেক্ট Sourceঅন্য কোনও অবজেক্টে কোনও পদ্ধতিতে কল করতে চাইবে Target, তবে সেই অন্য অবজেক্টের ইন্টারফেস ক্লায়েন্টের প্রত্যাশার চেয়ে আলাদা।

অ্যাডাপ্টার বস্তু লিখুন।

এটি Sourceঅবজেক্ট থেকে কল নিতে পারে এবং পর্দার আড়ালে যে Targetপদ্ধতিটি ব্যবহার করা উচিত তা কল করতে পারে।

Source->CallMethodAOnTarget() ---< Adaptor.CallMethodAOnTarget() this calls ---> Target.MethodWithDifferentSignatureAndName(int i)

প্রক্সি হিসাবে, আমার কাছে এই নকশা ধরণের কোনও অভিজ্ঞতা নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.