A collection of essential design patterns implemented in Java.
- SimpleSingleton: Basic singleton with lazy initialization
- BillPughSingleton: Thread-safe singleton using static inner class (Initialization on demand holder)
- AppFactory: Creates different app types based on environment
- App: Abstract base class for applications
- Concrete Apps: AndroidApp, iOSApp, DesktopApp, WatchApp, FlutterApp
Each pattern includes a main method for demonstration:
# Singleton examples
cd java/SingletonExample/src && javac com/company/SimpleSingleton.java && java com.company.SimpleSingleton
cd java/bill-pugh-singleton/src && javac com/company/BillPughSingleton.java && java com.company.BillPughSingleton
# Factory pattern example
cd java/factory-pattern/src && javac com/company/*.java && java com.company.GrzAppCatalogjava/
├── SingletonExample/ # Basic singleton implementation
├── bill-pugh-singleton/ # Thread-safe singleton
└── factory-pattern/ # Factory pattern with app creation