۱ پویا پارسایی
نحوه پیاده سازی متد update در respository pattern
جامعه پی اچ پی ایجاد شده در ۰۱ اردیبهشت ۱۴۰۱

سلام و عرض ادب،

بعد از override کردن متد آپدیت در EloquentUserRepository نباید توی JsonUserRepository هم این متد override  میشد؟

چون اونجا که ما هیچ exceptionی thorw نمیکردیم. پس وقتی داریم از JsonBaseRepository  استفاده میکنیم،اگر یوزر آپدیت هم نشه، هیچ اکسپشنی پرتاب نمیشه که respond رو خطا برگردونه.


حالا که متد آپدیت به این صورت پیاده سازی میشه، به جای اینکه بریم توی همه ی UserRepository هامون متد update رو override کنیم، بهتر نیست که توی همون BaseRepositoryهامون شرط  بذاریم که اگه آپدیت شد true برگردون، اگرم نشد یه exceptionی throw کن. که دیگه نخواد بریم توی همه ی UserRepositoryهامون این متد رو override کنیم.

 آیا این کار توی روند پیاده سازی RepositoryPattern مشکلی پیش میاره یا یکی از اصول solid رو نقض میکنه؟

سلام و احترام

ما در کلاس‌های فرزند BaseRepository کلاس هایی مثل ElqeuentRepository و JsonRepository رو داشتیم که هر کدوم از این‌ها Entity‌های خودشون رو داشتند. برای مثال UserEloquentRepository - QuestionEloquentRepository و... (همینطور برای Json) که هدف اصلی برای Override کردن این بودش که بتونیم Entity مختص به هر Repository رو return کنیم. برای مثال اگر ما در UserEloquentRepository بودیم و میخواستیم دیتایی از User رو برگردونیم UserEntity رو برمیگردوندیم، دقیقا همین اتفاق برای بقیه Repositoryها هم میوفته.

بررسی و پرتاب Exception رو هم میتونید به همون شکلی که گفتید درون خود EloquentBaseRepository یا JsonBaseRepository داشته باشید.


اگر ابهامی بود بگید تا بیشتر دربارش صحبت کنیم


بهترین پاسخ
امیر صالحی ۰۲ اردیبهشت ۱۴۰۱، ۲۰:۳۲