A collection of iOS Playground projects demonstrating and comparing MVC, MVP, MVVM, and VIPER design patterns.
ios-design-patterns is a collection of educational iOS Playground projects that demonstrate and compare four major architectural design patterns: MVC, MVP, MVVM, and VIPER. It helps developers understand how each pattern structures code differently while solving the same problem. The projects are based on Bohdan Orlov's popular iOS architecture article and have been updated to work with modern Xcode versions.
iOS developers learning about software architecture, particularly those transitioning between design patterns or deciding which pattern to adopt for their projects. It's also valuable for developers preparing for technical interviews where architectural knowledge is tested.
Developers choose this project because it provides immediately runnable, side-by-side comparisons of different patterns in a consistent codebase. Unlike theoretical explanations, it offers practical implementations that can be modified and tested in real-time within Xcode Playgrounds.
Learning ground for iOS Design Pattern included with sample projects for MVC, MVP, MVVM, and VIPER
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All projects are configured to run directly in Xcode Playground, enabling developers to modify code and see changes in real-time, as emphasized in the README's 'learn-by-doing' approach.
Implements the same app functionality across MVC, MVP, MVVM, and VIPER, allowing side-by-side analysis of code organization differences, as highlighted in the project description.
Builds on Bohdan Orlov's well-regarded iOS architecture article, ensuring the patterns are explained in a context familiar to the iOS community, as credited in the README.
Uses pure code UI without storyboards, demonstrating how to build interfaces programmatically, which is explicitly mentioned as a key feature in the README.
The project is based on Xcode 9.3 and older Swift versions, so it may not compile with current Xcode or utilize modern language features like SwiftUI or Combine, as noted in the changelog.
Focuses on basic pattern comparisons without addressing production concerns such as error handling, data persistence, or unit testing, limiting its applicability beyond learning, as evident from the simplified demos.
The changelog only mentions an update to Xcode 9.3, with no indication of recent updates, suggesting the project is not actively maintained for newer iOS versions or Swift evolution.