CoreLinux++  0.4.32
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
corelinux::Builder< ProductImpl, UniqueId > Class Template Referenceabstract

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...
 
 Builder (const Builder &aBuilder) throw ( Assertion )
 Copy constructor creates a new instance of the reference abstract factory. More...
 
virtual ~Builder (void)
 Virtual destructor.
 
Builderoperator= (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.
 

Detailed Description

template<class ProductImpl, class UniqueId>
class corelinux::Builder< ProductImpl, UniqueId >

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).

See also
AbstractFactory, Allocator, AbstractAllocator

Constructor & Destructor Documentation

template<class ProductImpl , class UniqueId >
corelinux::Builder< ProductImpl, UniqueId >::Builder ( AbstractFactory< UniqueId > *  aAbstractFactory)
throw (Assertion
)
inline

Default constructor requires a abstract factory for building the product parts.

Parameters
AbstractFactory

References corelinux::Builder< ProductImpl, UniqueId >::theFactory.

template<class ProductImpl , class UniqueId >
corelinux::Builder< ProductImpl, UniqueId >::Builder ( const Builder< ProductImpl, UniqueId > &  aBuilder)
throw (Assertion
)
inline

Copy constructor creates a new instance of the reference abstract factory.

Parameters
Builderconst reference

References corelinux::Builder< ProductImpl, UniqueId >::theFactory.

Member Function Documentation

template<class ProductImpl , class UniqueId >
virtual ProductImpl* corelinux::Builder< ProductImpl, UniqueId >::create ( void  )
inlinevirtual
template<class ProductImpl , class UniqueId >
virtual void corelinux::Builder< ProductImpl, UniqueId >::destroy ( ProductImpl *  aPtr)
inlinevirtual
template<class ProductImpl , class UniqueId >
virtual ProductImpl* corelinux::Builder< ProductImpl, UniqueId >::getCurrentProduct ( void  ) const
inlinevirtual

Retrieves the current product.

Returns
ProductImpl pointer

References corelinux::Builder< ProductImpl, UniqueId >::theCurrentProduct.

template<class ProductImpl , class UniqueId >
Builder& corelinux::Builder< ProductImpl, UniqueId >::operator= ( const Builder< ProductImpl, UniqueId > &  aRef)
inline
template<class ProductImpl , class UniqueId >
bool corelinux::Builder< ProductImpl, UniqueId >::operator== ( const Builder< ProductImpl, UniqueId > &  aRef)
inline

Equality operator.

Parameters
Builderconst reference
Returns
bool - true if same Builder instance

The documentation for this class was generated from the following file:

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium