Useful Links
Computer Science
Programming
By Language
Java Design Patterns
1. Introduction to Design Patterns
2. Creational Patterns
3. Structural Patterns
4. Behavioral Patterns
5. Advanced Topics and Best Practices
Creational Patterns
Overview of Creational Patterns
Focus on Object Creation Mechanisms
Goals of Flexibility and Reuse
Common Characteristics
Comparison Framework
Singleton Pattern
Intent and Applicability
Problem Context
Solution Structure
Private Constructor
Private Static Instance Variable
Public Static Accessor Method
Implementation Variations in Java
Eager Initialization
Static Block Initialization
Lazy Initialization
Thread-Safe Singleton
Double-Checked Locking
Bill Pugh Singleton Implementation
Enum Singleton
Common Use Cases
Logging Systems
Caching Mechanisms
Thread Pool Management
Configuration Settings
Database Connection Pools
Consequences and Trade-offs
Global State Management
Single Responsibility Principle Concerns
Unit Testing Challenges
Serialization Issues
Cloning Complications
Best Practices and Guidelines
Factory Method Pattern
Intent and Applicability
Problem Context
Solution Structure
Product Interface
ConcreteProduct Classes
Creator Abstract Class
ConcreteCreator Classes
Implementation in Java
Abstract Factory Methods
Inheritance and Polymorphism Usage
Return Type Considerations
Common Use Cases
Framework Development
Plugin Architectures
Library Design
Object Creation Abstraction
Consequences and Trade-offs
Decoupling Object Creation from Usage
Parallel Class Hierarchies
Increased Number of Classes
Enhanced Flexibility
Variations and Extensions
Abstract Factory Pattern
Intent and Applicability
Problem Context
Solution Structure
AbstractFactory Interface
ConcreteFactory Classes
AbstractProduct Interfaces
ConcreteProduct Classes
Implementation in Java
Interface-based Factory Design
Product Family Composition
Factory Selection Mechanisms
Common Use Cases
UI Toolkit Themes
Cross-platform Applications
Database Driver Selection
Operating System Abstraction
Consequences and Trade-offs
Isolation of Concrete Classes
Easy Product Family Exchange
Difficulty Adding New Product Types
Increased Abstraction Levels
Relationship to Factory Method
Builder Pattern
Intent and Applicability
Problem Context
Solution Structure
Builder Interface
ConcreteBuilder Classes
Director Class
Product Class
Implementation in Java
Static Nested Builder Class
Fluent Interface Design
Method Chaining
Validation Strategies
Common Use Cases
Complex Object Construction
Immutable Object Creation
Telescoping Constructor Problem
Configuration Object Building
Consequences and Trade-offs
Separation of Construction and Representation
Fine-grained Construction Control
Increased Class Count
Memory Overhead Considerations
Modern Java Enhancements
Prototype Pattern
Intent and Applicability
Problem Context
Solution Structure
Prototype Interface
ConcretePrototype Classes
Client Implementation
Implementation in Java
Cloneable Interface
Clone Method Override
Shallow Copy Implementation
Deep Copy Implementation
Copy Constructor Alternative
Common Use Cases
Expensive Object Creation
Dynamic Object Configuration
Object State Preservation
Performance Optimization
Consequences and Trade-offs
Hiding Concrete Product Classes
Complex Object Graph Cloning
Circular Reference Handling
Performance Benefits
Cloning Strategies and Best Practices
Previous
1. Introduction to Design Patterns
Go to top
Next
3. Structural Patterns