Middle+
Դու ունե՞ք փորձ մաքուր ճարտարապետության վրա իրականացված նախագծերով աշխատելու։
sobes.tech AI
Պատասխան AI-ից
Այո, կա:
Իմաստության մաքուր ճարտարապետության զարգացման ժամանակ օգտագործեցի հետևյալ շերտերը:
- Դոմենային շերտ: Ունի բիզնես-լոգիկա և էքսպորտներ: Չի կախված այլ շերտերից: Հստակեցնում է Use Cases (ինտերակտորներ) և repository ինտերֆեյսներ:
- Տվյալների շերտ: Իրականացնում է Data Layer-ի repository ինտերֆեյսները: Շահագործում է տվյալների աշխատանքը (միացանց, տվյալների բազա, SharedPreferences): Շատ հաճախ օգտագործվում են repository-ներ՝ տվյալների արտածման համար արտաքին աղբյուրներից՝ դոմենային էքսպորտների:
- Ներկայացման շերտ: Ունի View (Fragment, Activity) և Presenter/ViewModel: Պատասխանատու է տվյալների ցուցադրման և օգտագործողի հետ փոխազդեցության համար: Զանգում է Use Cases-ներին Domain Layer-ից:
Շերտերի միջև կախվածություններ:
- Ներկայացման շերտը կախված է Դոմենային շերտից:
- Տվյալների շերտը կախված է Դոմենային շերտից:
Մոդելներ և սկզբունքներ, որոնք կիրառվում են մաքուր ճարտարապետության մեջ:
- SOLID: Հատկապես կախվածության հակադարձման սկզբունքը:
- Dependency Injection: Թեստավորման և կախվածությունների կառավարման համար (օրինակ՝ Dagger, Koin օգտագործելով):
- Repository Pattern: Տվյալների աղբյուրների վրա հիմնված ամպլիտուդ:
- Use Cases (Interactors): Ներկայացնում են կոնկրետ գործողություններ բիզնես-լոգիկայում:
Նմուշային կառուցվածք՝
├── app
│ ├── build.gradle
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── myapp
│ │ ├── data // Repository-ների իրականացման, տվյալների աղբյուրներ
│ │ │ ├── datasource
│ │ │ └── repository
│ │ ├── domain // Բիզնես-լոգիկա, Use Cases, էքսպորտներ, ինտերֆեյսներ
│ │ │ ├── entity
│ │ │ ├── repository
│ │ │ └── usecase
│ │ └── presentation // View-շերտ, ViewModel/Presenter
│ │ ├── ui
│ │ └── viewmodel
│ └── res
Շերտերի փոխազդեցություն՝
- View-ը կանչում է ViewModel-ի մեթոդը:
- ViewModel-ը կանչում է համապատասխան Use Case-ը (բիզնես-լոգիկա):
- Use Case-ը հասնում է Domain Layer-ի ինտերֆեյսներին:
- Реализациите на repository-ները (Data Layer-ում) ստանում են տվյալները աղբյուրներից (միացանց, բազա):
- Repository-ները տվյալները վերածում են դոմենային էքսպորտների և վերադարձնում Use Case-ին:
- Use Case-ը տվյալները մշակում է և վերադարձնում է արդյունքը ViewModel-ին:
- ViewModel-ը թարմացնում է տվյալները, որոնք ցուցադրվում են View-ում:
Մաքուր ճարտարապետության կիրառմամբ հնարավոր է՝
- Բարելավել թեստավորելիությունը: Ամեն շերտ կարող է թեստավորվել առանձին:
- Բարձրացնել պահպանելիությունը: Փոփոխությունները մեկ շերտում նվազեցնում են մյուսների ազդեցությունը:
- Ավելացնել ճկունությունը: Լավ է փոխարինել տվյալների աղբյուրների կամ UI-ի իրականացման տարբերակները:
- Նվազեցնել կապակցությունը: Բիզնես-լոգիկայի և իրականացման մանրամասների բաժանում: