This is an application to understand Clean Architecture and Kotlin technologies.
HOME SCREEN | DETAİL SCREEN | DETAİL SCREEN |
---|---|---|
![]() |
![]() |
![]() |
MVVM and the interface work and background studies are separated and the complexity of the code is minimized. Each class only defines and performs its tasks. MVVM has a more common use than other design patterns, and offers more modularity, easy tested and layered structure is a good functioning task among display and model layers.
Clean Architecture is a form of code development approach and is a structure that adopts SOLID principles. The purpose of Clean Architecture is to minimize the complexity of code, the complexity of the application. Although it does not matter in small projects, it has a vital value in large projects. Thanks to Clean Architecture, we can write clean, tested and maintained, rearranged codes. With the MVVM, the most used architecture used by Android developers, we can easily apply Clean Architecture rules. But Clean Architecture is only. It can be used not with MVVM, but also with all other design patterns.
-
Use Casses: Clean Architecture approach is thought to be considered independent of business logic and business processes, system components and technical details. Therefore, Use Case is used. Each usage situation performs a function in the system and is for a particular purpose. Use Case conducts a task for business logic and business processes and plays an important role in system design.
-
Repository : The Repository pattern helps to make the application code more modular, tested and easy to maintain by abstracting access to the data source from other layers of the application (user interface, business logic, etc.). For example, when the application needs to change its access to a data source (for example, when it decides to use a web service instead of a database), it can only make this change in the repository class in the data access layer and do not need to change other layers of the application
- This app uses MVVM (Model View View-Model) architecture
- This layer performs operations to retrieve data from data sources and to write data to data sources. When retrieving data from data sources, it may process, filter, sort, and organize the data as necessary. The data layer typically includes data access objects (DAOs) and data source processing classes. This layer is completely independent from the other layers of the application and acts based on requests from other layers.
- This layer contains the core business logic and entity models on which the application functionality is focused. In this layer, application features and functionalities are identified, and their requirements and use cases are analyzed. Usually, the business processes and rules are defined in the classes and methods of this layer. The domain layer does not include interaction with the external world (user interface, database operations, etc.) and is completely independent, so it can be integrated or replaced with another application.
- This layer provides the design and functionality of the user interface. The user interface typically collects input from the user to process and displays results to the user. The user interface can communicate with other layers of the application and pass user actions to the application layers. This layer includes user interface components (activity, fragment, view, adapter, etc.) and classes that handle user events.
MIT License
Copyright (c) 2023 Sahin Karadeniz
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.