Dealing with Complexity
- Functional Decomposition
- Requirements and Inevitable Change
- Coupling and Cohesion
- Unwanted Side Effects
- Perspectives
- Responsibilities
Object-Oriented Paradigm
- Objects and Responsibilities
- Single Responsibility Principle (SRP)
- Interfaces and Abstract Classes
- Encapsulation and Polymorphism
- Liskov Substitution Principle (LSP)
- Object Construction and Destruction
- Classes vs. Structs in .NET
Overview of UML
- Diagram Types
- Class Diagrams
- Sequence Diagrams
Introduction to Design Patterns
- Origin of Design Patterns
- “Gang of Four” Patterns
- Key Features of Patterns
- Why Study Design Patterns?
- Design Strategies
Structural Patterns (Part I)
- Facade Pattern
- Adapter Pattern
- Facade vs. Adapter
Testability
- Introduction
- Unit Tests
- Integration Tests
- Test-Driven Development (TDD)
- Dependencies
Behavioral Patterns (Part I)
- Handling New Requirements
- Open-Closed Principle (OCP)
- Strategy Pattern
- Template Method Pattern
Structural Patterns (Part II)
- Decorator Pattern
- Proxy Pattern
Behavioral Patterns (Part II)
- Observer Pattern
- .NET Events
- Command Pattern
- WPF and ICommand
Creational Patterns
- Motivation
- Factories
- Singleton Pattern
- Object Pool Pattern
- Factory Method Pattern
- Abstract Factory Pattern
Model-View-Controller (MVC)
- Model-View-Controller (MVC)
- Model-View-Presenter (MVP)
- Model-View-View-Model (MVVM)
Architectural Patterns and Styles
- Component-Based Architecture
- Layered Architecture
- .NET Assemblies and Versioning
- N-Tier Architecture
- Service-Oriented Architecture (SOA)