ebook img

iOS Architecture Patterns: MVC, MVP, MVVM, VIPER, and VIP in Swift PDF

409 Pages·2023·8.294 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview iOS Architecture Patterns: MVC, MVP, MVVM, VIPER, and VIP in Swift

iOS Architecture Patterns MVC, MVP, MVVM, VIPER, and VIP in Swift — Raúl Ferrer García iOS Architecture Patterns MVC, MVP, MVVM, VIPER, and VIP in Swift Raúl Ferrer García iOS Architecture Patterns: MVC, MVP, MVVM, VIPER, and VIP in Swift Raúl Ferrer García Barcelona, Spain ISBN-13 (pbk): 978-1-4842-9068-2 ISBN-13 (electronic): 978-1-4842-9069-9 https://doi.org/10.1007/978-1-4842-9069-9 Copyright © 2023 by Raúl Ferrer García This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Aaron Black Development Editor: James Markham Coordinating Editor: Jessica Vakili Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 1 New York Plaza, Suite 4600, New York, NY 10004-1562, USA. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected]; for reprint, paperback, or audio rights, please e-mail [email protected]. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on the Github repository: https://github.com/Apress/iOS-Architecture- Patterns. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper We’re here to put a dent in the universe. Otherwise, why else even be here? —Steve Jobs They didn’t know it was impossible, so they did it. —Mark Twain Table of Contents About the Author ���������������������������������������������������������������������������������xi About the Technical Reviewer �����������������������������������������������������������xiii Acknowledgments ������������������������������������������������������������������������������xv Introduction ��������������������������������������������������������������������������������������xvii Chapter 1: Introduction�������������������������������������������������������������������������1 What Is Software Architecture? ����������������������������������������������������������������������������2 Architecture Patterns ��������������������������������������������������������������������������������������������3 Why Do We Need an Architecture Pattern for Our Applications? ��������������������������3 Design from High Level to Low Level ��������������������������������������������������������������������5 Design Patterns �����������������������������������������������������������������������������������������������6 SOLID Principles ��������������������������������������������������������������������������������������������10 How to Choose the Right Architectural Pattern ���������������������������������������������������11 Most Used Architecture Patterns �������������������������������������������������������������������13 In Search of a “Clean Architecture” ��������������������������������������������������������������������14 Clean Architecture Layers ������������������������������������������������������������������������������14 The Dependency Rule ������������������������������������������������������������������������������������17 Advantages of Applying a Clean Architecture ������������������������������������������������17 MyToDos: A Simple App to Test Architectures �����������������������������������������������������18 App Screens ��������������������������������������������������������������������������������������������������18 App Development ������������������������������������������������������������������������������������������28 Summary�������������������������������������������������������������������������������������������������������������43 v Table of ConTenTs Chapter 2: MVC: Model–View–Controller ��������������������������������������������45 What Is MVC? ������������������������������������������������������������������������������������������������������45 A Little History �����������������������������������������������������������������������������������������������45 Apple Model–View–Controller �����������������������������������������������������������������������46 Components in MVC ��������������������������������������������������������������������������������������������47 Model �������������������������������������������������������������������������������������������������������������47 View ���������������������������������������������������������������������������������������������������������������48 Controller �������������������������������������������������������������������������������������������������������49 Advantages and Disadvantages of MVC ��������������������������������������������������������������49 Advantages of the MVC Pattern ���������������������������������������������������������������������49 Disadvantages of the MVC Pattern ����������������������������������������������������������������50 MVC Application ��������������������������������������������������������������������������������������������������51 MVC Layers ����������������������������������������������������������������������������������������������������51 MyToDos Application Screens �����������������������������������������������������������������������64 Testing �����������������������������������������������������������������������������������������������������������89 Summary�����������������������������������������������������������������������������������������������������������105 Chapter 3: MVP: Model–View–Presenter ������������������������������������������107 What Is MVP? ����������������������������������������������������������������������������������������������������107 A Little History ���������������������������������������������������������������������������������������������107 How It Works �����������������������������������������������������������������������������������������������107 Components in MVP ������������������������������������������������������������������������������������108 Advantages and Disadvantages of the MVP ������������������������������������������������111 MVP Application ������������������������������������������������������������������������������������������������112 MVP Layers ��������������������������������������������������������������������������������������������������112 MyToDos Application Screens ���������������������������������������������������������������������116 MVP-MyToDos Testing ���������������������������������������������������������������������������������139 Summary�����������������������������������������������������������������������������������������������������������144 vi Table of ConTenTs Chapter 4: MVVM: Model–View–ViewModel �������������������������������������145 What Is MVVM? �������������������������������������������������������������������������������������������������145 A Little History ���������������������������������������������������������������������������������������������145 How It Works �����������������������������������������������������������������������������������������������145 Components in MVVM����������������������������������������������������������������������������������146 Advantages and Disadvantages of MVVM ���������������������������������������������������������148 Advantages ��������������������������������������������������������������������������������������������������149 Disadvantages ���������������������������������������������������������������������������������������������149 MVVM Application ���������������������������������������������������������������������������������������������150 MVVM Layers �����������������������������������������������������������������������������������������������151 MyToDos Data Binding ���������������������������������������������������������������������������������155 MyToDos Application Screens ���������������������������������������������������������������������164 MVVM-MyToDos Testing ������������������������������������������������������������������������������198 MVVM-C: Model–View–ViewModel–Coordinator �����������������������������������������������206 What Is a Coordinator? ��������������������������������������������������������������������������������206 Using MVVM-C in MyToDos ��������������������������������������������������������������������������208 Summary�����������������������������������������������������������������������������������������������������������224 Chapter 5: VIPER: View–Interactor–Presenter–Entity–Router ����������225 What Is VIPER? ��������������������������������������������������������������������������������������������������225 A Little History ���������������������������������������������������������������������������������������������225 How It Works �����������������������������������������������������������������������������������������������226 Components in VIPER ����������������������������������������������������������������������������������226 Advantages and Disadvantages of VIPER ����������������������������������������������������228 VIPER Application ����������������������������������������������������������������������������������������������230 Communication Between Components �������������������������������������������������������230 VIPER Layers ������������������������������������������������������������������������������������������������234 vii Table of ConTenTs MyToDos Application Screens ���������������������������������������������������������������������236 VIPER-MyToDos Testing �������������������������������������������������������������������������������275 Summary�����������������������������������������������������������������������������������������������������������282 Chapter 6: VIP: View–Interactor–Presenter ��������������������������������������285 What Is VIP? ������������������������������������������������������������������������������������������������������285 A Little History ���������������������������������������������������������������������������������������������285 How It Works �����������������������������������������������������������������������������������������������285 Components in VIP ���������������������������������������������������������������������������������������286 Advantages and Disadvantages of VIP���������������������������������������������������������293 VIP Layers ����������������������������������������������������������������������������������������������������294 MyToDos Application Screens ���������������������������������������������������������������������296 VIP-MyToDos Testing �����������������������������������������������������������������������������������351 Summary�����������������������������������������������������������������������������������������������������������364 Chapter 7: Other Architecture Patterns ��������������������������������������������365 Introduction �������������������������������������������������������������������������������������������������������365 RIBs: Router, Interactor, and Builder ������������������������������������������������������������������366 A Little History ���������������������������������������������������������������������������������������������366 How It Works �����������������������������������������������������������������������������������������������367 Components ������������������������������������������������������������������������������������������������368 Advantages and Disadvantages ������������������������������������������������������������������370 The Elm Architecture �����������������������������������������������������������������������������������������371 A Little History ���������������������������������������������������������������������������������������������371 How It Works �����������������������������������������������������������������������������������������������372 Components ������������������������������������������������������������������������������������������������373 Advantages and Disadvantages ������������������������������������������������������������������373 viii Table of ConTenTs Redux ����������������������������������������������������������������������������������������������������������������374 A Little History ���������������������������������������������������������������������������������������������374 How It Works �����������������������������������������������������������������������������������������������375 Components ������������������������������������������������������������������������������������������������375 Advantages and Disadvantages ������������������������������������������������������������������������377 Advantages ��������������������������������������������������������������������������������������������������377 Disadvantages ���������������������������������������������������������������������������������������������378 TCA: The Composable Architecture �������������������������������������������������������������������378 A Little History ���������������������������������������������������������������������������������������������378 How It Works �����������������������������������������������������������������������������������������������379 Components ������������������������������������������������������������������������������������������������381 Advantages and Disadvantages ������������������������������������������������������������������������382 Advantages ��������������������������������������������������������������������������������������������������383 Disadvantages ���������������������������������������������������������������������������������������������383 Summary�����������������������������������������������������������������������������������������������������������384 Chapter 8: Conclusion �����������������������������������������������������������������������385 The Importance of Clean Architecture ���������������������������������������������������������������385 Moving Forward ������������������������������������������������������������������������������������������������386 Index �������������������������������������������������������������������������������������������������389 ix About the Author Raúl Ferrer García holds a doctorate in chemistry, but he has always had a great interest in the world of computer science and software development, where he began his foray programming with a ZX Spectrum at the age of 14. For just over ten years, and in a self-taught way, he has entered the world of mobile development, first as an iOS Developer and then as Mobile Tech Lead at Editorial Vicens Vives, and he has dedicated himself completely to the development and management of mobile applications. He also maintains a blog in which he tries to explain everything he’s learned and studied about the world of mobile development. xi

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.