এটি প্রতারণামূলক নয়, তবে যে কোনও সরঞ্জামের মতো, এটি সমাধান করার উদ্দেশ্যে যা করা হয়েছে তার জন্য এটি ব্যবহার করা উচিত। প্রতিবিম্ব, সংজ্ঞা অনুসারে, আপনি কোডের মাধ্যমে কোডটি পরিদর্শন ও সংশোধন করতে পারবেন; যদি আপনার এটি করা দরকার তবে প্রতিচ্ছবি হ'ল কাজের জন্য সরঞ্জাম। প্রতিবিম্ব হ'ল মেটা-কোড সম্পর্কিত: কোড যা লক্ষ্যবস্তু কোড (নিয়মিত কোডের বিপরীতে, যা ডেটা লক্ষ্য করে)।
ভাল প্রতিচ্ছবি ব্যবহারের একটি উদাহরণ জেনেরিক ওয়েব সার্ভিস ইন্টারফেস ক্লাস: একটি সাধারণ নকশা হ'ল পেডলোড কার্যকারিতা থেকে প্রোটোকল বাস্তবায়ন পৃথক করা। সুতরাং আপনার কাছে একটি শ্রেণি রয়েছে (আসুন এটি কল করুন T
) যা আপনার পেডলোডকে কার্যকর করে এবং অন্যটি যা প্রোটোকল প্রয়োগ করে ( P
)। T
মোটামুটি সোজা: আপনি যে কল করতে চান তার জন্য, কেবল একটি পদ্ধতি লিখুন যা এটি করার কথা বলে তাই করে। P
তবে, পদ্ধতি কলগুলিতে ওয়েব পরিষেবা কলগুলি ম্যাপ করা দরকার needs এই ম্যাপিংটিকে জেনেরিক তৈরি করা আকাঙ্খিত, কারণ এটি অতিরিক্ত কাজকে এড়িয়ে চলে এবং P
অত্যন্ত পুনরায় ব্যবহারযোগ্য করে তোলে । প্রতিচ্ছবি T
রানটাইমে ক্লাস পরিদর্শন করার এবং P
ক্লাস সম্পর্কে কোনও সংকলন-সময় জ্ঞান ছাড়াই ওয়েব সার্ভিস প্রোটোকলের মাধ্যমে প্রাপ্ত স্ট্রিংয়ের ভিত্তিতে এর পদ্ধতিগুলি কল করার মাধ্যম সরবরাহ করেT
। 'কোড সম্পর্কে কোড' নিয়ম ব্যবহার করে, কেউ তর্ক করতে পারে যে ক্লাসে তার ডেটার অংশ হিসাবে P
ক্লাসে কোড রয়েছে T
।
যাহোক.
প্রতিবিম্ব আপনাকে ভাষার ধরণের পদ্ধতির সীমাবদ্ধতা পেতেও সরঞ্জাম দেয় - তাত্ত্বিকভাবে, আপনি সমস্ত পরামিতি টাইপ হিসাবে পাস করতে পারেন object
এবং প্রতিবিম্বের মাধ্যমে তাদের পদ্ধতিগুলি কল করতে পারেন। ভয়েলি, যে ভাষাটি দৃ strong় স্থিতিশীল টাইপিং শৃঙ্খলা প্রয়োগ করার কথা বলেছিল তা এখন দেরীতে বাইন্ডিং সহ গতিময় টাইপের ভাষার মতো আচরণ করে, কেবল সিনট্যাক্সটি আরও বিস্তৃত। আমি এখনও অবধি এরকম প্যাটার্নটির প্রতিটি একক উদাহরণ হ'ল একটি নোংরা হ্যাক, এবং অদ্যাবধি, ভাষার ধরণ পদ্ধতির মধ্যে একটি সমাধান সম্ভব হত, এবং এটি নিরাপদ, আরও মার্জিত এবং সমস্ত ক্ষেত্রে আরও দক্ষ হয়ে উঠত would ।
কয়েকটি ব্যতিক্রম বিদ্যমান, যেমন জিইউআই নিয়ন্ত্রণগুলি যা বিভিন্ন অ-সম্পর্কিত ধরণের ডেটা উত্সগুলিতে ডেটা-আবদ্ধ হতে পারে; আপনার ডেটা একটি নির্দিষ্ট ইন্টারফেস বাস্তবায়নের আদেশ দেয় যাতে আপনি ডেটা-বাঁধাই করতে পারেন এটি বাস্তববাদী নয়, এবং প্রোগ্রামারকে প্রতিটি ধরণের ডেটা উত্সের জন্য একটি অ্যাডাপ্টার প্রয়োগ করতে পারে না। এই ক্ষেত্রে, ডেটা উত্সের ধরণ সনাক্ত করতে প্রতিবিম্বটি ব্যবহার করা এবং ডেটা বাইন্ডিং সামঞ্জস্য করা আরও দরকারী পছন্দ।