Design: Abstract Factory Pattern Implementation
Design and implement the Abstract Factory pattern focusing on the creation of related product families. Out of scope are specific product implementations beyond demonstration and integration with external systems.
Functional Requirements
FR1: Create families of related or dependent objects without specifying their concrete classes.
FR2: Support multiple product variants that can be used interchangeably.
FR3: Allow easy addition of new product families without changing existing code.
FR4: Ensure that client code is decoupled from the concrete implementations of products.
Non-Functional Requirements
NFR1: Design should promote scalability and maintainability.
NFR2: Factory creation should be efficient with minimal runtime overhead.
NFR3: The system should support at least two distinct product families.
NFR4: The design must follow object-oriented principles and best practices.