سلام

دوستان ، در الگوی Repository ، چند تا سئوال دارم :

MVVM with Clean Architecture: Android Apps that Scale | Toptal

The Repository Pattern in C#‎ | CodeGuru.com

اولا ، این الگو ، برای جدا کردن لایه ی منطق تجاری (یا Model یا Domain) با لایه ی داده (یا Data) هست دیگه . درسته؟
یعنی این لایه ، چیزی شبیه به لایه ی ViewModel که در الگوی MVVM ، باعث جدا کردن لایه های View و Model میشه ، هست دیگه؟ درسته؟

دوما ، کلاس Repository درون کدوم لایه قرار میگیره و ارتباط لایه ها با هم چطوری هست؟

سوما ، آیا خود کلاس Repository و اینترفیس هاش ، درون یک لایه ی مجزا قرار میگیرن (فرضا مثل لایه ی Repository Layer در عکس زیر) و کلاس های مربوط به دیتابیس و Entity Framework و موجودیت ها (مثل کلاس Context و موجودیت و کلاس Person در لایه ی Data Layer در عکس زیر) ، درون یک لایه ی مجزای دیگه قرار میگیرن و همچنین منطق تجاری ( Model ( Domain ) Layer در عکس زیر) هم درون یک لایه ی مجزا قرار میگیرن (مثل عکس زیر) ؟
چون قراره که Repository ، این دو را از هم جدا کنه دیگه . پس مثل عکس زیر باید بشن دیگه؟ درسته؟


Repository Pattern.jpg


پس فرضا این (Respository) ، اگه در معماری MVVM اجرا بشه ، اولا Model (یا Domain) با Repository در تماس هست ؟ درسته؟
(یعنی Repository با ViewModel در تماس نیست . هر چند MVVM روی این ارتباط ، انگار تاکید نداره و براش مهم نیست) .

یعنی پروژه ی MVVM ، کلا 5 لایه ی View و ViewModel و Model و Respository و Data میشه دیگه؟ درسته؟

در لینک اول ، شکل اول هم انگار این طوری هست .

=========


- سئوال مهم اینه که اگه قراره که لایه های Model با Data ، فقط توسط Respository ، ارتباط داشته باشن (و این 2 تا لایه اصلا به هم وابسته نباشن) ، پس در همه ی مثال ها (مثل همون لینک های بالا) ، اینترفیس و کلاس مربوط به Respository ، شی ای از کلاسِ موجودیت در لایه ی Data میگیره (شبیه به عکسی که در بالا قرار دادم و متد AddPerson در کلاس PersonRepository ، شی ای از نوع Person که در لایه ی Data قرار داره میگیره) .

و این یعنی اینکه لایه ی قبلی اش (یعنی لایه ی Model) ، برای ارتباط با لایه ی Respository ، مجبوره که شی ای از نوع لایه ی Data بده .
در واقع یعنی باز لایه ی Model ، برای ارتباطط با لایه ی Respository ، مجبوره که به لایه ی Data وابسته بشه .

خوب این مدلی که فلسفه ی Respository را نقض میکنه !
اگه Respository ، جنریک هم باشه ، باز هم فرقی نداره و همین داستان هست .

یا من اشتباه میکنم؟
اگه اشتباه میکنم ، کجا را اشتباه میکنم و داستان Respository چجوری میشه؟

تشکر دوستان .