Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UML Package diagram for CleanArchitecture #207

Open
ashraffouad opened this issue Jan 14, 2017 · 5 comments
Open

UML Package diagram for CleanArchitecture #207

ashraffouad opened this issue Jan 14, 2017 · 5 comments
Labels

Comments

@ashraffouad
Copy link

@android10

Hi,
I came to the concept of Clean Architecture & it is really inspiring. I have read all your 4 articles including the last one for dynamic parameters, & I think you are doing gr8 work here & I really admire your sharing attitude with others.

In the path to understand the code especially I'm not Android guru (Just want to get my hand dirty in Android field) I have used draw.io to draw UML package diagram for the 3 layers as below. (I'm an old guy that is used to UML more in the design field).

If you liked the idea, I can draw several UML diagrams including (Class & sequence) & share it with you & if you can correct me & maybe u are generous enough to write a 5th post to describe the code assisted with diagram it will be great.

clean-architecture-layer

Again thanks for yr gr8 effort, and keep up the good work 👍 👍 👍

@android10
Copy link
Owner

Hello @ashraffouad thanks for the good words! I really appreciate that you guys find all this useful!

By the way, very interesting stuff and I definitely encourage you to keep it up with the diagrams. I cannot promise to write an article about it (many times due to the lack of time) but we can keep the discussion here and I'm sure about one thing: I will definitely share all this with the community.

Thanks for the contribution as well and keep up the good work too!

@ashraffouad
Copy link
Author

No worries about article, I think we can figure out something if you really find such diagrams useful at the end of this discussion. As long you bare with me in answering questions it will be great.

Some thoughts about the project after this package diagram:

1- Presentation layer: "com.fernandocejas.android10.sample.presentation.navigation" package, I think its natural place will be as sub-package under "com.fernandocejas.android10.sample.presentation.view" as it is related to this layer more than separate. What do u think?

2- Presentation layer: "com.fernandocejas.android10.sample.presentation.mapper" it seems separate from "com.fernandocejas.android10.sample.presentation.model" although I think may be for consistency across the whole project to appear as sub-package similar to data layer mapper & its relation with entity "com.fernandocejas.android10.sample.data.entity.mapper". What do u think?

3-I'm trying to find my way in RxJava, but I didn't understand package "com.fernandocejas.android10.sample.data.executor" (Marked red in diagram) having a single class "JobExecutor" and used in the presentation layer ApplicationModule only, can u give me more information?

@ashraffouad
Copy link
Author

@android10 Can you pelase check the above 3 questions mentioned above in comments

@android10
Copy link
Owner

@ashraffouad unfortunately I cannot reply every single question from the community due the lack of time. Everything related with this repo is in this section. People are great contributing and repllying questions, so I encourage you to dive deeper, there were super interesting questions.

Also that is why I wrote 2 articles:
http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
http://fernandocejas.com/2015/07/18/architecting-android-the-evolution/

Will try to quickly reply now:

1 - I think it is a matters of taste. It made more sense to me to have it separately as a separation of concerns. Views contain only android views whereas navigation could also mean deep linking, external intents or urls, that are part of the application navigation.

2 - Good feedback. Although not very strong on this one. Would not mind changing it.

3 - It is not used in the "presentation layer", it turns out that dependency injection (for instance ApplicationModule) sits on this layer for simplicity.

@rafipanoyan
Copy link

Hello,
Following a new issue I opened about that, this diagram made my observation more clear :
Isn't this architecture more a classic 3 tier architecture than a Clean Architecture ?

I followed this repository architecture for all my clean arch projects but now I'm wondering if it was really the case

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants