What are Design Patterns?
  • What this course is about
  • Creational, Behavioural and Structural Paradigms
  • Design Principle #1: Rely on Interfaces, not Implementations
  • Design Principle #2: The Open/Closed Principle
  • Design Principle #3: Principle of Least Knowledge
  • Design Principles #4 and #5: Dependency Inversion and the Hollywood Principle
  • Quiz : Design Patterns
  • A taste of things to come
The Strategy Pattern
  • The Strategy Design Pattern: Introduction via String Sorting
  • The Strategy Pattern and Dependency Injection - I
  • The Strategy Pattern and Dependency Injection - II
  • Quiz : Strategy Pattern
  • Quiz : Strategy Pattern
  • Quiz : Strategy Pattern
The Decorator Pattern
  • The Decorator Design Pattern
  • The Decorator Design Pattern In Action: Java File APIs
  • Quiz : Decorator Pattern
  • Quiz : Decorator Pattern
The Factory Pattern
  • The Factory Design Pattern: Introduction
  • The Factory Design Pattern In Action: Database Drivers
  • The Abstract Factory Design Pattern
  • The Abstract Factory Design Pattern: Families of classes
  • The Factory Design Pattern In Action: Reflection - I
  • The Factory Design Pattern In Action: Reflection - II
  • Quiz : Factory Pattern
  • Quiz : Factory Pattern
  • Quiz : Factory Pattern
  • Quiz : Factory Pattern
The Singleton Pattern
  • The Singleton Design Pattern: Introduction
  • The Singleton Design Pattern: Double-Checked Locking
  • The Singleton Design Pattern: The Synchronized Keyword
  • The Singleton Design Pattern: Pulling together a multi-threaded solution
  • Quiz : Singleton Pattern
  • Quiz : Singleton Pattern
  • Quiz : Singleton Pattern
  • Quiz : Singleton Pattern
The Adapter Pattern
  • The Adapter Design Pattern: Introduction
  • The Adapter Design Pattern: Introduction - II
  • The Adapter Design Pattern In Action: Tables and Charts
  • Quiz : Adapter Pattern
The Facade Pattern
  • The Facade Design Pattern
  • Quiz : Facade Pattern
  • Quiz : Facade Pattern
The Template Pattern
  • The Template Design Pattern: Introduction via Text Auto-Summarization
  • The Template Design Pattern In Action: Frameworks
  • The Template Design Pattern In Action: Frameworks - II
  • Quiz : Template Pattern
The Iterator Pattern
  • The Iterator Design Pattern: Introduction
  • The Iterator Design Pattern: Type Safety via Generics
  • The Iterator Design Pattern: Internal and External Iterators
  • The Iterator Design Pattern: Language Support for Iterators in Python and Java
  • Quiz : Iterator Pattern
The MVC Paradigm
  • The Model View Controller Design Pattern: An Introduction
  • The Model View Controller Design Pattern In Action: A MediaPlayer Example
  • The Model View Controller Design Pattern In Action: A Chart Example
  • Quiz : MVC
  • Quiz : MVC
  • Quiz : MVC
The Observer Pattern
  • The Observer Design Pattern: Introduction
  • The Observer Design Pattern In Action: Mouse Handling and Trees
  • The Observer Design Pattern In Action: MVC + Observer = UI Magic
  • The Observer Design Pattern In Action: A MediaPlayer Example - I
  • Quiz : Observer Pattern
  • Quiz : Observer Pattern
  • Quiz : Observer Pattern
  • Quiz : Observer Pattern
  • Quiz : Observer Pattern
  • Quiz : Observer Pattern
  • Quiz : Observer Pattern
The Command Pattern
  • The Command Design Pattern: Introduction
  • The Command Design Pattern In Action: Lambda Functions - I
  • The Command Design Pattern In Action: Lambda Functions - II
  • The Command Design Pattern In Action: Threading
  • The Command Design Pattern In Action: Undo and Logging
  • Quiz : Command Pattern
  • Quiz : Command Pattern
  • Quiz : Command Pattern
  • Quiz : Command Pattern
  • Quiz : Command Pattern
The Composite Pattern
  • The Composite Design Pattern: Introduction via Decorators
  • The Composite Design Pattern: Class Hierarchy
  • The Composite Design Pattern In Action: Transitions, Swing Containers
  • Quiz : Composite Pattern
The Builder Pattern
  • The Builder Design Pattern: Introduction
  • The Builder Design Pattern In Action: An SQL Query Builder I
  • The Builder Design Pattern In Action: An SQL Query Builder II