Introduction
  • Welcome to Class!
  • Class Organization
  • Overview
  • Advantages of Design Patterns
  • Types of Design Patterns
  • Selecting and Using Design Patterns
Installing Required Software
  • Install JDK for Windows
  • Installing and Configuring IntelliJ IDEA on Windows
  • Installing JDK 11 on a Mac
  • Installing and Configuring IntelliJ IDEA on a Mac
  • Installing JDK 11 on a Linux Machine
  • Installing and Configuring IntelliJ IDEA on a Linux Machine
Principles and Strategies of Design
  • Overview
  • Design Smells
  • Programming to an interface
  • Using Composition Over Inheritance
  • Delegation Principles
  • The Single Responsibility Principle
  • The Open Closed Principle
  • The Liskov Substitution Principle
  • The Interface Segregation Principle
  • Dependency Inversion
  • Dependency Injection
UML
  • Overview
  • Class Diagrams
  • Drawing a Class Diagram
  • Example Class Diagrams
Creational Design Patterns
  • Overview
Factory Method
  • Overview
  • Implementation (Abstract Creator)
  • Implementation (Concrete Creator)
  • Implementation (Static Method Creator)
  • (Challenge) Factory Method
  • (Challenge Solution) Factory Method
Abstract Factory Method
  • Overview
  • Implementation
  • (Challenge) Abstract Factory Method
  • (Challenge Solution) Abstract Factory Method
Singleton
  • Overview
  • Singleton vs. Dependency Injection
  • Implementation Overview
  • Implementation (Lazy Evaluation)
  • Implementation (Synchronized method)
  • Implementation (Double Checked Locking)
  • Implementation (Eager Evaluation)
  • Implementation (Bill Pugh)
  • (Challenge) Singleton
  • (Challenge Solution) Singleton
Builder
  • Overview
  • Implementation (Overview)
  • Implementation (Example)
  • (Challenge) Builder
  • (Challenge Solution) Builder
Prototype
  • Overview
  • Implementation
  • Problems with the Cloneable Interface
  • (Challenge) Prototype
  • (Challenge Solution) Prototype
Structural Design Patterns
  • Overview
Adapter
  • Overview
  • Object Adapter Implementation
  • Object Adapter (Turkey/Duck Example)
  • Object Adapter (Calculator/Triangle Example)
  • Class Adapter Implementation
  • ClassAdapter Example
  • (Challenge) Adapter
  • (Challenge Solution) Adapter
Bridge
  • Overview
  • Implementation (Overview)
  • Implementation (Example)
  • (Challenge) Bridge
  • (Challenge Solution) Bridge
Composite
  • Overview
  • Implementation (Overview)
  • Implementation (Example)
  • (Challenge) Composite
  • (Challenge Solution) Composite
Decorator
  • Overview
  • Implementation (Overview)
  • Implementation (File I/O Example)
  • (Challenge) Decorator
  • (Challenge Solution) Decorator
Facade
  • Overview
  • Implementation (Overview)