تفاوت ریپازیتوری با دیتاسورس؟

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

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

 

فایل پیوست

محمد دبیری
محمد دبیری

25 اردیبهشت 00

2
حذف شده

سلام وقت بخیر

 

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

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

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

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

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

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

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

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

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

موفق باشید

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

25 اردیبهشت 00

2
حذف شده

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

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

فایل پیوست

محمد باقر ملایی

توسط

محمد باقر ملایی

12 خرداد 00