تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Masoud Esmailnejad
اضافه کردن abstract class
جامعه فلاتر ایجاد شده در ۲۲ اسفند ۱۴۰۰

سلام خسته نباشید توی پروژه todo list ما یه class داشتیم به نام source که همه ی abstract‌ها توی اون بود بعد هم repository و هم data source از اون ارث بری میکردن مثه زیر

abstract class DataSource<T>{
  Future <T>> getAll({String searchKeyword});
  Future<T> findById(dynamic id);
  Future<void> deleteAll();
  Future<void> delete(T data);
  Future<void> deleteById(dynamic id);
  Future<T> createOrUpdate(T data);
}

ولی الان ما کلاس abstract رو برا دوتا کلاسا تعریف کردیم

abstract class IProductDataSource{
  Future<List> getAll(int sort);
  Future<List> search(String searchTerm);
}

و

abstract class IProductRepository{
  Future<List> getAll(int sort);
  Future<List> search(String searchTerm);
}

من یه مقدار گیج شدم میشه یه توضیحی بدید؟

چون این دو تا مفهوم و لایه جدا هستند مثلا abstrct IDatasource میسازیم و دو کلاس localDatasource و remoteDatasource اونو implement می‌کنند حالا در کانستراکتور ریپاسیتوری ما IDatasource میدیم موقعی که بخواهیم در کانستراکتور ریپاسیتوری یک نمونه جدید بسازیم میتونیم کلاس Local یا Remote رو بدیم یا هردو یعنی یک نمونه جدید از این‌ها بسازیم

حالا ما ریپاسیتوری رو در بلاک استفاده می‌کنیم بهش IProductRepository رو میدیم(در کاسنتراکتور) موقعی که بخواهیم بلاک رو بسازیم در کانستراکتورش کلاس ProductRepository میدیم و یک نمونه جدید می‌سازیم نه datasource چون بلاک باید با ریپاسیتوری در ارتباط باشه نه دیتاسورس

بهترین پاسخ
safa ۲۲ اسفند ۱۴۰۰، ۰۸:۰۵