- Handouts / Worksheets
- Slides
- Code Examples
- Videos
In software engineering, a software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.
The goal of this course is to analyze solutions to most common design problems. Our aim is to show that this analysis is highly practical and useful approach to take your programming thinking to the next level. We will cover multiple categories of design patterns and show through multiple examples how they work and where they can be applied.
- Basic knowledge of programming
- Working installation of Golang
- Motivation / Why are we talking about this topic?
- Explanation of the topic
- Analogy
- Diagram
- Example
- Plain English
- Technical details
- Assignment / Practice problems
- [] Creational Patterns
- [] Abstract Factory
- [] Builder
- [] Factory
- [] Prototype
- [] Singleton
- [] Structural Patterns
- [] Adapter
- [] Bridge
- [] Composite
- [] Decorator
- [] Facade
- [] Flyweight
- [] Proxy
- [] Behavioral Patterns
- [] Chain of Responsibility
- [] Command
- [] Interpreter
- [] Iterator
- [] Mediator
- [] Memento
- [] Observer
- [] State
- [] Strategy
- [] Template Method
- [] Visitor
- [] Concurrency patterns
- [] Active Object
- [] Balking
- [] Binding properties
- [] Blockchain
- [] Double-checked locking
- [] Event-based asynchronous
- [] Guarded suspension
- [] Join
- [] Lock
- [] Messaging design pattern
- [] Monitor object
- [] Read-Write Lock
- [] Scheduler
- [] Thread pool
- [] Thread-specific storage
- 41 Videos
- AVG Length: 10min
- Total: 410 minutes (6.8 hours)
- Examples: 41 - 82
- Handouts + Exercises: 41 - 82
- Projects: 10 - 15