একটি সাধারণ প্যাটার্ন যা আমি দেখি তা হ'ল Mapper
প্যাটার্ন হিসাবে পরিচিত ( DataMapper
পুরোপুরি অন্য কিছু যা নিয়ে বিভ্রান্ত হবেন না ), যা একটি যুক্তি হিসাবে একরকম "কাঁচা" ডেটা উত্স হিসাবে গ্রহণ করে (যেমন একটি ADO.NET DataReader
বা DataSet
) এবং ক্ষেত্রগুলিতে মানচিত্র করে একটি ব্যবসায় / ডোমেন অবজেক্টের বৈশিষ্ট্য। উদাহরণ:
class PersonMapper
{
public Person Map(DataSet ds)
{
Person p = new Person();
p.FirstName = ds.Tables[0].Rows[0]["FirstName"].ToString();
// other properties...
return p;
}
}
ধারণাটি আপনার গেটওয়ে / ডিএও / সংগ্রহশালা / ইত্যাদি। এটি ম্যাপারে ফিরে আসার আগেই কল করবে, সুতরাং আপনি অন্তর্নিহিত ডেটা ধারক বনাম একটি সমৃদ্ধ ব্যবসায়িক সামগ্রী পাবেন।
যাইহোক, এটি কারখানার প্যাটার্নের সাথে (ডিডিডি পার্লেন্সে, যাইহোক) সম্পর্কিত যা এটি অভিন্ন নয় বলে মনে হচ্ছে, যা কোনও ডোমেন অবজেক্ট তৈরি করে এবং প্রদান করে। উইকিপিডিয়া এই পুনরায় বলেছেন: ডিডিডি কারখানা:
কারখানা: ডোমেন অবজেক্ট তৈরির পদ্ধতিগুলির জন্য কোনও বিশেষ কারখানার অবতারণ করা উচিত যেমন বিকল্প বাস্তবায়ন সহজেই পরিবর্তিত হতে পারে।
এই উক্তিটি থেকে আমি কেবলমাত্র তফাতটিই ভাবতে পারি যে ডিডিডি-স্টাইলের কারখানাটি প্যারামিটারাইজ করা যেতে পারে যাতে প্রয়োজন দেখা দিলে এটি একটি বিশেষ ধরণের অবজেক্টটি ফিরিয়ে আনতে পারে (যেমন বিজনেসকাস্টমারের বনাম আবাসিক কাস্টমারের) যখন "ম্যাপার" নির্দিষ্ট শ্রেণিতে যুক্ত থাকে এবং শুধুমাত্র অনুবাদ করে।
সুতরাং এই দুটি নিদর্শন মধ্যে একটি পার্থক্য আছে বা মূলত বিভিন্ন নামের সাথে একই জিনিস?
DataMapper
প্যাটার্নটি ডাটাবেস নিজেই অ্যাক্সেস করেছে, যখন এই "ম্যাপার" ডাটাবেস থেকে টানছে না, কেবল কোনও ধরণের ফলাফলের সেটটিকে কোনও বস্তুতে রূপান্তরিত করে।