Skip to content

Commit ac101c1

Browse files
authored
Merge pull request #6 from OsipXD/patch-1
Иерархия проекта оформлена с помощью псевдографики
2 parents a3271af + 5cdfa6e commit ac101c1

File tree

2 files changed

+110
-105
lines changed

2 files changed

+110
-105
lines changed

practice/Practice_article.md

Lines changed: 55 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -72,58 +72,61 @@ https://martinfowler.com/bliki/CQRS.html<br>
7272

7373
В проектах с чистой архитекторой, чаще всего пакеты формируют по фичам или слоям. Примеры есть в статье http://www.javapractices.com/topic/TopicAction.do?Id=205.<br>
7474
Примерная структура проекта может быть такой:<br>
75-
-di<br>
76-
---app<br>
77-
---payments<br>
78-
---operation<br>
79-
-presentation<br>
80-
---view<br>
81-
-----payments<br>
82-
-------PaymentsView<br>
83-
-------PaymentsFragment<br>
84-
-----operations<br>
85-
-------OperationsView<br>
86-
-------OperationsFragment<br>
87-
---presenter<br>
88-
-----payments<br>
89-
-------PaymantsPresenter<br>
90-
-----operations<br>
91-
-------OperationsPresenter<br>
92-
-domain (он же business)<br>
93-
---payments<br>
94-
-----PaymentsInteractor<br>
95-
-----PaymentsInteractorImpl<br>
96-
-----CurrencyHandler (вспомогательный класс для PaymentsInteractor)<br>
97-
---operations<br>
98-
-----OperationsInteractor<br>
99-
-------rubs<br>
100-
---------OperationsInteractorRubs<br>
101-
---------RubsManager (вспомогательный класс для OperationsInteractorRubs)<br>
102-
-------currency<br>
103-
---------OperationsInteractorCurr<br>
104-
---------CurrencyManager (вспомогательный класс для OperationsInteractorCurr)<br>
105-
-repositories<br>
106-
---payments<br>
107-
-----PaymentsRepository<br>
108-
-----PaymentsRepositoryImpl<br>
109-
---operations<br>
110-
-----OperationsRepository<br>
111-
-----OperationsRepositoryImpl<br>
112-
-data<br>
113-
---network<br>
114-
---db<br>
115-
-models (по сути хранилище всех dto)<br>
116-
---payments<br>
117-
-----PaymentsModel<br>
118-
---operations<br>
119-
-----presentation<br>
120-
-------OperationUIModel<br>
121-
-----domain<br>
122-
-------OperationsRubModel<br>
123-
-------OperationCurrModel<br>
124-
-----data<br>
125-
-------OperationsRubNetworkModel<br>
126-
-------OperationCurrNetworkModel<br>
75+
```
76+
project
77+
├─ di
78+
│ ├─ app
79+
│ ├─ payments
80+
│ └─ operation
81+
├─ presentation
82+
│ ├─ view
83+
│ │ ├─ payments
84+
│ │ │ ├─ PaymentsView
85+
│ │ │ └─ PaymentsFragment
86+
│ │ └─ operations
87+
│ │ ├─ OperationsView
88+
│ │ └─ OperationsFragment
89+
│ └─ presenter
90+
│ ├─ payments
91+
│ │ └─ PaymantsPresenter
92+
│ └─ operations
93+
│ └─ OperationsPresenter
94+
├─ domain (он же business)
95+
│ ├─ payments
96+
│ │ ├─ PaymentsInteractor
97+
│ │ ├─ PaymentsInteractorImpl
98+
│ │ └─ CurrencyHandler (вспомогательный класс для PaymentsInteractor)
99+
│ └─ operations
100+
│ ├─ OperationsInteractor
101+
│ ├─ rubs
102+
│ │ ├─ OperationsInteractorRubs
103+
│ │ └─ RubsManager (вспомогательный класс для OperationsInteractorRubs)
104+
│ └─ currency
105+
│ ├─ OperationsInteractorCurr
106+
│ └─ CurrencyManager (вспомогательный класс для OperationsInteractorCurr)
107+
├─ repositories
108+
│ ├─ payments
109+
│ │ ├─ PaymentsRepository
110+
│ │ └─ PaymentsRepositoryImpl
111+
│ └─ operations
112+
│ ├─ OperationsRepository
113+
│ └─ OperationsRepositoryImpl
114+
├─ data
115+
│ ├─ network
116+
│ └─ db
117+
└─ models (по сути хранилище всех dto)
118+
├─ payments
119+
│ ├─ PaymentsModel
120+
└─ operations
121+
├─ presentation
122+
│ └─ OperationUIModel
123+
├─ domain
124+
│ ├─ OperationsRubModel
125+
│ └─ OperationCurrModel
126+
└─ data
127+
├─ OperationsRubNetworkModel
128+
└─ OperationCurrNetworkModel
129+
```
127130

128131
Разбивать только по слоям или фичам невсегда бывает удобно, поэтому гибридный вариант, когда внутри одного пакета слоя могут быть пакеты с фичами, вполне приемлим.<br>
129132

theory/Theory_article.md

Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -23,60 +23,62 @@
2323
Модели данных обычно представляют собой простые POJO, то есть только данные без какой-либо логики. Для упрощения все подобные модели лучше размещать в специальном пакете под названием "models" (можно подобрать более удачное название, чтобы не так созвучно было с понятием "model").<br>
2424

2525
Структура пакетов:
26+
```
27+
project
28+
├─ di
29+
│ ├─ app
30+
│ ├─ payments
31+
│ └─ operation
32+
├─ presentation
33+
│ ├─ view
34+
│ │ ├─ payments
35+
│ │ │ ├─ PaymentsView
36+
│ │ │ └─ PaymentsFragment
37+
│ │ └─ operations
38+
│ │ ├─ OperationsView
39+
│ │ └─ OperationsFragment
40+
│ └─ presenter
41+
│ ├─ payments
42+
│ │ └─ PaymantsPresenter
43+
│ └─ operations
44+
│ └─ OperationsPresenter
45+
├─ domain (он же business)
46+
│ ├─ payments
47+
│ │ ├─ PaymentsInteractor
48+
│ │ ├─ PaymentsInteractorImpl
49+
│ │ └─ CurrencyHandler (вспомогательный класс для PaymentsInteractor)
50+
│ └─ operations
51+
│ ├─ OperationsInteractor
52+
│ ├─ rubs
53+
│ │ ├─ OperationsInteractorRubs
54+
│ │ └─ RubsManager (вспомогательный класс для OperationsInteractorRubs)
55+
│ └─ currency
56+
│ ├─ OperationsInteractorCurr
57+
│ └─ CurrencyManager (вспомогательный класс для OperationsInteractorCurr)
58+
├─ repositories
59+
│ ├─ payments
60+
│ │ ├─ PaymentsRepository
61+
│ │ └─ PaymentsRepositoryImpl
62+
│ └─ operations
63+
│ ├─ OperationsRepository
64+
│ └─ OperationsRepositoryImpl
65+
├─ data
66+
│ ├─ network
67+
│ └─ db
68+
└─ models (по сути хранилище всех dto)
69+
├─ payments
70+
│ ├─ PaymentsModel
71+
└─ operations
72+
├─ presentation
73+
│ └─ OperationUIModel
74+
├─ domain
75+
│ ├─ OperationsRubModel
76+
│ └─ OperationCurrModel
77+
└─ data
78+
├─ OperationsRubNetworkModel
79+
└─ OperationCurrNetworkModel
80+
```
2681

27-
-di<br>
28-
---app<br>
29-
---payments<br>
30-
---operation<br>
31-
-presentation<br>
32-
---view<br>
33-
-----payments<br>
34-
-------PaymentsView<br>
35-
-------PaymentsFragment<br>
36-
-----operations<br>
37-
-------OperationsView<br>
38-
-------OperationsFragment<br>
39-
---presenter<br>
40-
-----payments<br>
41-
-------PaymantsPresenter<br>
42-
-----operations<br>
43-
-------OperationsPresenter<br>
44-
-domain (он же business)<br>
45-
---payments<br>
46-
-----PaymentsInteractor<br>
47-
-----PaymentsInteractorImpl<br>
48-
-----CurrencyHandler (вспомогательный класс для PaymentsInteractor)<br>
49-
---operations<br>
50-
-----OperationsInteractor<br>
51-
-------rubs<br>
52-
---------OperationsInteractorRubs<br>
53-
---------RubsManager (вспомогательный класс для OperationsInteractorRubs)<br>
54-
-------currency<br>
55-
---------OperationsInteractorCurr<br>
56-
---------CurrencyManager (вспомогательный класс для OperationsInteractorCurr)<br>
57-
-repositories<br>
58-
---payments<br>
59-
-----PaymentsRepository<br>
60-
-----PaymentsRepositoryImpl<br>
61-
---operations<br>
62-
-----OperationsRepository<br>
63-
-----OperationsRepositoryImpl<br>
64-
-data<br>
65-
---network<br>
66-
---db<br>
67-
-models (по сути хранилище всех dto)<br>
68-
---payments<br>
69-
-----PaymentsModel<br>
70-
---operations<br>
71-
-----presentation<br>
72-
-------OperationUIModel<br>
73-
-----domain<br>
74-
-------OperationsRubModel<br>
75-
-------OperationCurrModel<br>
76-
-----data<br>
77-
-------OperationsRubNetworkModel<br>
78-
-------OperationCurrNetworkModel<br>
79-
8082
3. Есть несколько вариантов трактования понятия "Репозиторий". Подробно можно почитать, например, [здесь](http://hannesdorfmann.com/android/evolution-of-the-repository-pattern). В Андроид-мире "Репозиторий" - это абстракция для получения данных, то есть она скрывает, с какого именно источника получены те или иные данные. <br>
8183
Кроме того Репозиторий может внутри себя реализовывать логику кеширования данных и соответственно выдачи либо закешированных данных, либо данных с сети.
8284

0 commit comments

Comments
 (0)