CoreLinux++
0.4.32
|
Builder seperates the construction of a complex object from its representation so that the same construction process can create different representations. More...
#include <Builder.hpp>
Public Member Functions | |
Builder (AbstractFactory< UniqueId > *aAbstractFactory) throw ( Assertion ) | |
Default constructor requires a abstract factory for building the product parts. More... | |
throw (Assertion) | |
Copy constructor creates a new instance of the reference abstract factory. More... | |
virtual | ~Builder (void) |
Virtual destructor. | |
Builder & | operator= (const Builder &aRef) |
Operation assignment. More... | |
bool | operator== (const Builder &aRef) |
Equality operator. More... | |
virtual ProductImpl * | getCurrentProduct (void) const |
Retrieves the current product. More... | |
virtual CountCref | getProductCreates (void) const |
Retrieve the product create counts. | |
virtual CountCref | getProductDestroys (void) const |
Retrieve the product destroy counts. | |
virtual AbstractFactory < UniqueId > * | getFactory (void) const |
Retrieve the AbstractFactory. | |
virtual ProductImpl * | create (void) |
Default create routine invokes the implementation createProduct method. More... | |
virtual void | destroy (ProductImpl *aPtr) |
Default destroy routine invokes the implementation destroyProduct method. More... | |
Protected Member Functions | |
Builder (void) throw (Assertion) | |
Default constructor not supported. | |
void | incrementCreates (void) |
Increment the creates. | |
void | incrementDestroys (void) |
Increment the destroys. | |
virtual ProductImpl * | createProduct (void) const =0 |
Pure virtual createProduct. | |
virtual void | destroyProduct (ProductImpl *) const =0 |
Pure virtual destroyProduct. | |
Protected Attributes | |
ProductImpl * | theCurrentProduct |
The product that was most recently built. | |
AbstractFactory< UniqueId > * | theFactory |
The factory for creating parts. | |
Count | theProductCreates |
The count of creates. | |
Count | theProductDestroys |
The count of destroys. | |
Builder seperates the construction of a complex object from its representation so that the same construction process can create different representations.
This differs from AbstractFactory in that the Factory creates parts and Builder creates Products (assembled parts).
|
inline |
Default constructor requires a abstract factory for building the product parts.
AbstractFactory |
References corelinux::Builder< ProductImpl, UniqueId >::theFactory.
|
inlinevirtual |
Default create routine invokes the implementation createProduct method.
References corelinux::Builder< ProductImpl, UniqueId >::createProduct(), corelinux::Builder< ProductImpl, UniqueId >::incrementCreates(), and corelinux::Builder< ProductImpl, UniqueId >::theCurrentProduct.
|
inlinevirtual |
Default destroy routine invokes the implementation destroyProduct method.
ProductImpl | pointer |
References corelinux::Builder< ProductImpl, UniqueId >::destroyProduct(), corelinux::Builder< ProductImpl, UniqueId >::incrementDestroys(), and corelinux::Builder< ProductImpl, UniqueId >::theCurrentProduct.
Referenced by corelinux::Builder< ProductImpl, UniqueId >::operator=().
|
inlinevirtual |
Retrieves the current product.
References corelinux::Builder< ProductImpl, UniqueId >::theCurrentProduct.
|
inline |
Operation assignment.
Uses the same factory as the reference after destroying theCurrentProduct.
Builder | const reference |
References corelinux::Builder< ProductImpl, UniqueId >::destroy(), corelinux::Builder< ProductImpl, UniqueId >::getFactory(), corelinux::Builder< ProductImpl, UniqueId >::theCurrentProduct, corelinux::Builder< ProductImpl, UniqueId >::theFactory, corelinux::Builder< ProductImpl, UniqueId >::theProductCreates, and corelinux::Builder< ProductImpl, UniqueId >::theProductDestroys.
|
inline |
|
inline |
Copy constructor creates a new instance of the reference abstract factory.
Builder | const reference |
References corelinux::Builder< ProductImpl, UniqueId >::theFactory.