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.

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.

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.

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.

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.

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.

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.

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.

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.