abstract_factory_pattern
-
namespace abstract_factory_pattern
Namespace for the Abstract Factory pattern.
-
class AbstractFactory
- #include <abstract_factory.hpp>
Abstract Factory interface for creating families of related products. Declares methods for creating each type of product (Product A and Product B).
Subclassed by abstract_factory_pattern::ConcreteFactory1, abstract_factory_pattern::ConcreteFactory2
Public Functions
-
virtual std::unique_ptr<AbstractProductA> createProductA() const = 0
Creates a product of type A.
- Returns:
A unique pointer to a Product A instance.
-
virtual std::unique_ptr<AbstractProductB> createProductB() const = 0
Creates a product of type B.
- Returns:
A unique pointer to a Product B instance.
-
virtual std::unique_ptr<AbstractProductA> createProductA() const = 0
-
class AbstractProductA
- #include <abstract_factory.hpp>
Abstract interface for Product A. Provides a common interface for all implementations of Product A.
Subclassed by abstract_factory_pattern::ConcreteProductA1, abstract_factory_pattern::ConcreteProductA2
Public Functions
-
virtual std::string operationA() const = 0
Performs an operation specific to Product A.
- Returns:
A string representing the operation performed by Product A.
-
virtual std::string operationA() const = 0
-
class AbstractProductB
- #include <abstract_factory.hpp>
Abstract interface for Product B. Provides a common interface for all implementations of Product B.
Subclassed by abstract_factory_pattern::ConcreteProductB1, abstract_factory_pattern::ConcreteProductB2
Public Functions
-
virtual std::string operationB() const = 0
Performs an operation specific to Product B.
- Returns:
A string representing the operation performed by Product B.
-
virtual std::string operationB() const = 0
-
class ConcreteFactory1 : public abstract_factory_pattern::AbstractFactory
- #include <abstract_factory.hpp>
Concrete Factory 1. Creates products belonging to Family 1.
Public Functions
-
inline virtual std::unique_ptr<AbstractProductA> createProductA() const override
Creates a ConcreteProductA1 instance.
- Returns:
A unique pointer to a ConcreteProductA1 instance.
-
inline virtual std::unique_ptr<AbstractProductB> createProductB() const override
Creates a ConcreteProductB1 instance.
- Returns:
A unique pointer to a ConcreteProductB1 instance.
-
inline virtual std::unique_ptr<AbstractProductA> createProductA() const override
-
class ConcreteFactory2 : public abstract_factory_pattern::AbstractFactory
- #include <abstract_factory.hpp>
Concrete Factory 2. Creates products belonging to Family 2.
Public Functions
-
inline virtual std::unique_ptr<AbstractProductA> createProductA() const override
Creates a ConcreteProductA2 instance.
- Returns:
A unique pointer to a ConcreteProductA2 instance.
-
inline virtual std::unique_ptr<AbstractProductB> createProductB() const override
Creates a ConcreteProductB2 instance.
- Returns:
A unique pointer to a ConcreteProductB2 instance.
-
inline virtual std::unique_ptr<AbstractProductA> createProductA() const override
-
class ConcreteProductA1 : public abstract_factory_pattern::AbstractProductA
- #include <abstract_factory.hpp>
Concrete implementation of Product A for Family 1.
Public Functions
-
inline virtual std::string operationA() const override
Implementation of Product A’s operation for Family 1.
- Returns:
A string identifying the operation performed by ConcreteProductA1.
-
inline virtual std::string operationA() const override
-
class ConcreteProductA2 : public abstract_factory_pattern::AbstractProductA
- #include <abstract_factory.hpp>
Concrete implementation of Product A for Family 2.
Public Functions
-
inline virtual std::string operationA() const override
Implementation of Product A’s operation for Family 2.
- Returns:
A string identifying the operation performed by ConcreteProductA2.
-
inline virtual std::string operationA() const override
-
class ConcreteProductB1 : public abstract_factory_pattern::AbstractProductB
- #include <abstract_factory.hpp>
Concrete implementation of Product B for Family 1.
Public Functions
-
inline virtual std::string operationB() const override
Implementation of Product B’s operation for Family 1.
- Returns:
A string identifying the operation performed by ConcreteProductB1.
-
inline virtual std::string operationB() const override
-
class ConcreteProductB2 : public abstract_factory_pattern::AbstractProductB
- #include <abstract_factory.hpp>
Concrete implementation of Product B for Family 2.
Public Functions
-
inline virtual std::string operationB() const override
Implementation of Product B’s operation for Family 2.
- Returns:
A string identifying the operation performed by ConcreteProductB2.
-
inline virtual std::string operationB() const override
-
class AbstractFactory