الگوی ریپازیتوری

پرسیده شده
فعالیت 1686 روز پیش
دیده شده 895 بار
0

سلام

وقت بخیر

یک سوال در رابطه با لایه های معماری نرم افزار و دیزاین پترن ریپازیتوری داشتم :

 

من تا وقتی که فقط با معماری mvc پروژه میزدم هیچ مشکلی نداشتم
میدونستم که مدل شامل هر Entity من میشه که وظیفش کار با دیتابیس اون موجودیت از پروژه من با دیتابیس بود
یعنی یه کلاس کار با دیتابیس میساختم حالا این میتونست یه ORM آماده مثل Eloquent هم باشه
بعد هر مدل من از اون کلاس استفاده میکرد و صرفا اسم جداول مربوط به اون Entity توی دیتابیس رو مشخص میکرد و من به جای اینکه مستقیما با خود اون کلاسه دیتابیس کار کنم و هی مجبور باشم اسم دیتابیس و چیزای مربوط به اون موجودیت رو بدم یکبار توی model اون بخش تغییر میدادم و ازش استفاده میکردم
در واقع model های من ارث بری میکردند از اون کلاس کلی

اما وقتی رفتم سر وقت دیزاین پترن Repository و فهمیدم که یک لایه ای بین اون persistence و مدل ما قرار میگیره و در واقع داده رو از persistence میگیره و تحویل مدل میده کلا ذهنم به هم ریخته
البته اینو بگم که میدونم هدف کلی ریپازیتوری اینه که ما عملیات کار با دیتابیس کلا جدا از مدل و لایه های دیگه باشه و بعدا ما خواستیم مثلا دیتابیس رو تغییر بدیم فقط کلاس های مربوط به ریپازیتوری رو تغییر بدیم

اما الان نمیدونم چرا ما مستقیما از ریپو استفاده نمیکنیم و داریم دوباره داده رو میدیم به مدل و از اون میگیریم

اصلا توی این معماری وظیفه مدل چیه ؟

 

و اینکه اصلا میشه ما ریپازیتوری رو توی وردپرس به شکلی پیاده سازی کنیم که در کنار wpdb از eloquent هم بتونیم استفاده کنیم ؟

اگر آره میشه یک روند کلی از پیاده سازیش بگید که باید به چه شکلی باشه ؟

فایل پیوست

Deleted
Deleted

25 شهریور 98

0
حذف شده

سلام. در واقع استفاده از مدل جای بحث زیاد داره ولی در پروژه های کوچیک استفاده از این سیستم خیلی مشکلی نداره چون احتمال تغییر دیتابیس در اون بیسار کمه. اما در پروژه های بزرگ تر این قطعا می تونه خیلی مفید باشه و جلوی خیلی از مشکلات رو بگیره. در پروژه هایی که ما از Repo استفاده می کنیم قطعا دیگه منطق ها باید حتما  و حتما فقط با Repo کار کنن واز اون دیتا بگیرن و ذخیره کنن.

در وردپرس هم استفاده از چنین سیستم اصلا نیاز نمیشه.

فایل پیوست

کیوان علی محمدی

توسط

کیوان علی محمدی

2 مهر 98

جلسه ارث بری