تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ محمد دبیری
تفاوت ریپازیتوری با دیتاسورس؟
پوریا شفیعی حل شده توسط پوریا شفیعی

سلام وقت بخیر
ببخشید من تفاوت وجود ریپازیتوری و دیتاسورس رو متوجه نشدم. در نهایت باز ما اومدیم توی رپازیتوری، یم شی از دیتاسورس گرفتیم و درخواستمون رو انجام دادیم. خب چرا همین کار رو مستقیم توی خود ریپازیتوری انجام ندادیم؟

 

سلام وقت بخیر

 

برای اینکه این موضوعات رو بهتر و بیشتر متوجه بشیم لازم هست یک دید حتی نسبی به معماری MVP داشته باشیم.

علت تمام این کار‌ها همونطور که میدونید توسعه پذیری اپلیکیشن ما هستش .

Repository یک مخزن data هستش که پیچیدگی فراهم کردن دیتا رو از لایه‌های دیگه نرم افزار جدا میکنه 

همونطور که دانستیم برای‌ها Entity مون باید یه REpository بسازیم به عبارتی هر کلاس یک وظیفه داراست بنابرین طبق استاندارد ما نباید یک Repository بسازیم و همه request هامون اونجا قرار بدیم (دلیل این موضوع قراردادی هست که وجود داره و توسعه پذیریه) پس بطور کل این موضوع اجباری نیست .

پس متوجه شدیم Repository میاد و پیچیدگی دیتا اینکه از کجا میاد رو از دوش ViewModel بر میداره و ویو مدل ما فقط میاد به Repository درخواست میده و Repo ما تصمیمات رو میگیره.

همونطور که گفته شد تموم func‌های ما توی ریپاسیتوری میتونن DataSource داشته باشند یا اصلا نداشته باشند .

پس اینجا میایم دو تا اینترفیس جدا میسازیم .چرا؟

ممکنه شما Repository بگید لیست فلان چیز رو از کش بده یا از سرور بده که اینجا هست نقش ریپاسیتوری و دیتا سورس مشخص میشه. یعنی یکی از DataSource و یکی برای Local مون .

پس این بود تفاوت این موضوع .

موفق باشید

بهترین پاسخ
پوریا شفیعی ۲۵ اردیبهشت ۱۴۰۰، ۱۷:۰۶

دیتا سورس ممکنه از لوکال باشه یا از سرور

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

محمد باقر ملایی ۱۲ خرداد ۱۴۰۰، ۰۷:۳۶