Clean Architecture in iOS
Clean Architecture in iOS
Principles and good design practices applied in iOS.
About the Book
It isn't easy to control what cannot be measured.
That's. When Clean Architecture is applied to solutions, one consequence is to provide mechanisms to measure and test every critical software piece in the solution.
The challenge is not only about starting a project with an architecture that allows its progressive evolution but also keeping it on an upward curve in terms of its quality attributes.
To the extent that the Solution Architecture allows flexible measurements, testing, and scaling, the indications will be better for the project and, therefore, for the company.
This work is based on the principles of Clean Architecture, the style of architecture that Robert C. Martin introduced us years ago. It is a text focused on solutions designed for iOS; however, it could affirm that 90% of the concepts also apply to Android solutions.
The first thing that is developed in the book is the design principles that are the basis for using the following themes. Concepts such as dependency inversion, inversion of control and dependency injection are exposed for your clear understanding, with the additional purpose of knowing how to differentiate between one concept or another.
Then the relationship between the components is reviewed through levels and layers. This analysis is necessary to locate each element with its respective responsibilities in the right place.
Once the parts are located, the need arises to communicate them with each other. This is where the reader is oriented to the ports and adapters chapter to determine the appropriate integration mechanisms between components of different layers and levels.
Continuing with the development of the topic, we go down a little more in detail to analyze the alternatives for organizing the components in directories or folders and what might be the limits established between them.
In this way, two essential chapters are reached in the design of a mobile solution, the Design patterns, and Considerations in Architecture.
Design patterns expose those known and recommended patterns to apply to mobile solutions. Innovative pattern variables are also presented that could be useful for startups and companies specialized in this type of service.
In the chapter that develops considerations in architecture, a set of arguments is presented that could answer questions that we as a product development team usually ask ourselves daily while implementing it under the Clean Architecture framework. That is a chapter that I hope is controversial due to the particular existence of opinions in another sense, that is precisely one of the objectives that I seek to achieve with this work. To lead the reader to debate and carry out their analyses, they apply the most appropriate solution in their solutions.
Subsequently, to complement the two previous chapters, the orchestration strategies between local data (in memory or cache) and remote data (external APIs and other sources) are developed. A plan that sooner rather than later should be considered in most solutions.
And finally, the topic developed in the chapter on implementation details corresponds to techniques used properly in iOS that help to apply Clean Architecture in a source code environment.
With this content and a couple of annexes, the present work is closed, which I hope will be of liking and utility for the reader.
Bundles that include this book
Table of Contents
-
Preface
- About the book
- Who this book is for
- Reader feedback and customer support
-
Design Principles
- Dependency Inversion
- Inversion of control
- Dependency injection
-
Levels in an application
- Relationship between layers and levels
- How to determine the level of a layer?
- Why is it important to distinguish the level of one layer from another layer?
- How to ensure that the dependency rule is applied and maintained correctly?
-
Ports and Adapters
- Input Port Design
- Output Port Design
- Good practices in port design
- Benefits gained from using ports
-
Organization of the project
- Boundaries
- Monolithic or modular design
- Folders and source organization
- Software development processes
-
Design patterns
- Dependency Injection
- Model View ViewModel
- Coordinator
- Repository
- Plugin
- Data Mapper
- Reactive patterns
-
Architecture considerations
- The need for mediator elements
- The location of business rules in the Domain
- Differentiate between application logic and domain logic
- Differentiate between model entity and persistence entity
- When to decide between Entities or Value Objects
- Input and output structures in Use Cases
- On using Entities as input and output object
- Mapping between borders
- When it is necessary to assign interfaces
- Organize the Domain layer in a separate context?
- Organize the Data layer in a separate context?
- Modules to share resources between features
- Pragmatism in Architecture?
-
Strategies for managing local and remote information
- Single source of truth
- Offline-first
- Online-first
- Backup between sources
-
Exploring implementation details
- Module configuration
- Configuration of multiple environments
- Strategies to apply mocking
- Linters and tools to validate compliance with the architecture
- Templates to pattern implementation.
-
Appendix A
- Association, aggregation and composition relationships between elements
- Design with relationships in mind
- Notes
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $14 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them