Awesome software design patterns
Software design pattern - A general, reusable solution to a commonly occurring problem within a given context in software design. It is a description or template for how to solve a problem that can be used in many different situations.
The concept of design patterns started with a book about object-oriented programming called “Design Patterns: Elements of Reusable Object-Oriented Software” by the famous “gang of four” (GoF). Since then design patterns have been used to summarize knowledge in every aspect of the software lifecycle, from cloud to databases, architecture, security and many more.
This document is a curated “list of design patterns lists”. It can help the reader find encapsulated wisdom earned by years of experience in easy to read bite-size nuggets.
Contents
- Programming language design patterns
- General Architecture
- Cloud Architecture
- Serverless Architecture
- Micro services & Distributed Systems
- Internet of things
- Big Data
- Databases
- Docker and DevOps
- Mobile
- Front End Development
- Security
- Books
- Videos
- Miscellaneous
Programming Language Design Patterns
- AngularJS
- C#
- design-patterns
- design-patterns-for-human - ultra simplified explanation to design patterns.
- C++
- Closure
- Go
- Java
- sourcemaking - patterns and anti patterns.
- oodesign - patterns catalog with UML diagrams.
- design-patterns
- effective-java patterns - patterns from the Effective Java book.
- Design patterns implemented in Java
- JavaScript
- es6 design patterns
- humans - ultra simplified explanation to design patterns.
- design-patterns
- design patterns by addy osmani
- Kotlin
- PHP
- humans - ultra simplified explanation to design patterns.
- design-patterns
- Python
- design-patterns
- PyPattyrn - A simple library for implementing common design patterns.
- React
- Ruby
- Scala
- Swift
- TypeScript
- UML
General Architecture
- 10 common architectural patterns - 10 Common software architectural patterns in a nutshell.
- reactive design patterns - This website accompanies the book Reactive Design Patterns by Roland Kuhn.
- scalable System Design Patterns - Scalable system design techniques.
- martin fowler - Catalog of Patterns of Enterprise Application Architecture.
- system-design-primer - Design large-scale systems.
- architecting-for-reliability - Architecting for Reliability Part 1/3.
Cloud Architecture
- Cloud cost hacking - Patterns for reducing cloud costs.
- AWS cloud design patterns - The AWS Cloud Design Patterns (CDP).
- Azure cloud design patterns - Building reliable, scalable, secure applications in the cloud.
- cloud patterns - A community site dedicated to documenting a master patterns catalog.
- cloud computing patterns - Cloud Computing Patterns.
- Google Cloud Solutions - Real business cases solutions with diagrams on GCP.
Serverless Architecture
- serverless architecture - Serverless Architecture: Five Design Patterns.
- solving problems in serverless - Patterns for Solving Problems in Serverless Architectures.
Micro services & Distributed Systems
- microservice patterns - A community site dedicated to documenting a master patterns catalog.
- microservices - A pattern language for microservices.
- microservices-anti patterns - Microservices antipatterns and pitfalls.
- 12factor - The twelve-factor methodology.
- microservices-sync-vs-async - Microservices patterns, synchronous and asynchronous.
- message-queues - Comparing-message-queue-architectures.
- enterprise Integration Patterns - Patterns and Best Practices for Enterprise Integration.
Internet of things
- iot-communication-patterns - Strengths and Weaknesses of IoT Communication Patterns.
- design-patterns-for-iot - A Design Pattern Framework for IoT Architecture.
Big Data
- bigdatapatterns - A community site dedicated to documenting a master patterns catalog.
- mapreduce-patterns - Map-reduce patterns.
- streaming-realtime-analytics - 13 Stream Processing Patterns for building Streaming and Realtime Applications.
Databases
- SQL
- database tenancy patterns - Multi-tenant SaaS database tenancy patterns
- databaseanswers - Industry-specific SQL Data Models in 50 categories.
- database-programmer - Table-design-patterns.
- red-gate - five simple database design errors you should avoid.
- talend - Data model design best practices.
- sqlcheck - Anti-patterns in SQL queries.
- NOSQL
- nosql resilience patterns - Practical NoSQL resilience design pattern for the enterprise.
- nosql-patterns - Pragmatic Programming Techniques.
- mongodb - Mongodb design patterns.
Docker and DevOps
- containerspatterns - There are a Thousand Ways to Use Containers.
- container-anti-patterns - 10 containers anti-patterns.
- kubernetes - Kubernetes Production Patterns.
- container-design-patterns - Container Design Patterns for Kubernetes Pods Design.
- pattern-and-anti-pattern-cicd - Pattern and anti-pattern cicd.
- best-practices-for-shell-scripts - Best practices for shell scripts.
- kubernetes patterns - Presentation around the book kubernetes paterns.
Mobile
- IOS
- Android
- androidpatterns - Interaction patterns that can help you design Android apps.
- design-patterns-for-android - Common Design Patterns for Android.
- mvc-mvp-and-mvvm - The MVC, MVP, and MVVM Smackdown.
Front-End Development
- user Interface - User Interface Design patterns.
- oocss-acss-bem-smacss - OOCSS, ACSS, BEM, SMACSS: what are they? What should I use?
- css-protips - A collection of tips to help take your CSS skills pro.
- responsive design patterns - A collection of patterns and modules for responsive designs.
- [front-End Architecture]
- mv* - MVC/MVP/MVVM/CLEAN/VIPER/REDUX/MVI/PRNSAASPFRUICC.
- martinfowler - GUI Architectures.
Security
- opensecurityarchitecture - Security Architecture Patterns.
- martinfowler - Web-security-basics.
- cloud-security - Cloud security architecture intro.
- owasp - Security by Design Principles.
- azure-security - Azure security best practices and patterns.
Books
- Django Design Patterns and Best Practices
- MongoDB Applied Design Patterns
- Design-Patterns-Elements-Reusable-Object-Oriented
- Head-First-Design-Patterns-Brain-Friendly
- Effective-Java-3rd-Joshua-Bloch
- Node.js Design Patterns
- Game Programming Patterns
- Object Design Style Guide
Other Awesome Lists
- Other amazingly awesome lists can be found on the awesome list.
Contributing
- This content is based on a GitHub page that I created https://github.com/DovAmir/awesome-design-patterns
Suggestions for additional design pattern resources are welcome by doing a Git pull-request or contacting me.