Design patterns are conceptual solutions to solve common redundant problems in software engineering. However, learning them is not easy as litterature or tutorials on the Internet often introduce them with theorical examples. This talk gives you a slightly different approach by introducing some of the most useful design patterns with practical code samples to solve real world problems.
Creational Patterns: Abstract Factory and Simple Factory
Structual Patterns: Adapter and Composite
Behavioral Patterns: Mediator