আমাদের ডেলফি 2007 অ্যাপ্লিকেশনটিতে আমরা নীচের অনেকগুলি নির্মাণ ব্যবহার করছি
FdmBasic:=TdmBasicData(FindOwnerClass(AOwner,TdmBasicData));
FindOwnerClass একটি নির্দিষ্ট শ্রেণি (উদাহরণস্বরূপ TdmBasicData) সন্ধানের জন্য বর্তমান উপাদানটির মালিক শ্রেণিবিন্যাস উপরের দিকে ভ্রমণ করে s ফলাফল অবজেক্টটি ফিল্ড ভেরিয়েবল এফডিএমবাসিকে সঞ্চিত থাকে। আমরা এটি প্রাথমিকভাবে পাশাপাশি ডেটামোডুলগুলি পাস করতে ব্যবহার করি।
উদাহরণ: প্রতিবেদন তৈরি করার সময়, ফলস্বরূপ ডেটাডমডুল টিডিএমরপোর্টবেসডাটা দ্বারা অ্যাক্সেস করা একটি টেবিলের একটি ব্লব ক্ষেত্রটিতে ফলাফলগুলি সংকুচিত করা হয় এবং সংরক্ষণ করা হয়। আমাদের অ্যাপ্লিকেশনটির একটি পৃথক মডিউলে, রিপোর্টবিল্ডার ব্যবহার করে পেজড ফর্মে রিপোর্ট থেকে ডেটা দেখানোর কার্যকারিতা রয়েছে। এই মডিউলটির প্রধান কোড (টিডিএমআরবিআরপোর্ট), সংবেদনশীল ব্লব ডেটা বিভিন্ন টেবিলগুলিতে রূপান্তর করতে একটি ক্লাস টিআরবিটেম্পাটাবেস ব্যবহার করে যা রিপোর্ট বিল্ডার রানটাইম রিপোর্ট ডিজাইনার-এ ব্যবহারযোগ্য। টিডিএমআরবিআরপোর্টে প্রতিবেদন সম্পর্কিত সমস্ত ধরণের ডেটা (রিপোর্টের ধরণ, রিপোর্টের গণনার মান নির্ধারণ ইত্যাদি) এর জন্য টিডিএমআরপোর্টব্যাসডেটার অ্যাক্সেস রয়েছে। টিআরবিটিম্পডাটাবেস টিডিএমআরবিআরপোর্টে নির্মিত তবে টিডিএমরেপ্টবারেসেটা অ্যাক্সেস করতে হবে। সুতরাং এটি এখন উপরের নির্মাণ ব্যবহার করে করা হয়েছে:
constructor TRBTempDatabase.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
FdmReportBaseData := TdmRBReport(FindOwnerClass(Owner, TdmRBReport)).dmReportBaseData;
end;{- .Create }
আমার অনুভূতি হ'ল এর অর্থ এই যে টিআরবিটিম্পডাটাবেস তার মালিককে অনেক কিছু জানে এবং আমি ভাবছিলাম যে এটি কোনওরকম কোডের গন্ধ বা অ্যান্টি-প্যাটার্ন।
এই সম্পর্কে আপনি কি বলবেন? এটি কি কোডের গন্ধ? যদি তা হয় তবে এর থেকে উত্তম উপায় কী?