AbstractFactory Pattern Requirement
CoreLinux++
Functional Requirement Document Revision $Revision: 1.3 $ Last
Modified : Saturday, May 13, 2000
Title : Abstract Factory Pattern
1. Introduction
AbstractFactory provides an interface for creating families of
related or dependent objects without specifying their concrete
classes.
1.1 Deliverables Overview
The participants in the AbstractFactory pattern include:
- AbstractFactory (libcorelinux)
-
Declares an interface for operations that create abstract product
objects.
-
AbstractAllocator (libcorelinux)
-
A Strategy that declares an interface for the extension of memory
management methods.
-
ConcreteFactory (external)
-
Implements the operations to create concrete product objects. Often
the concrete factory is implemented as a Singleton.
-
AbstractProduct (external)
-
Declares an interface for a type of product object.
-
ConcreteProduct (external)
-
Defines a product object to be created by the corresponding concrete
factory, implements the AbstractProduct interface.
The CoreLinux++ team will deliver the AbstractFactory type.
The CoreLinux++ team will deliver the FactoryException type.
The CoreLinux++ team will deliver the AbstractAllocator type.
The CoreLinux++ team will deliver the AllocatorException type.
Users can utilize the participant abstractions or implementations
as a basis for creating their own AbstractFactory derivations outside
of the libcorelinux++ library.
2. Functional Requirements
The AbstractFactory type will:
Provide default constructors and virtual destructor.
Provide operator assignment and equality overloads.
Provide instrumentation for the number of creates and
destroys.
Take a AbstractAllocator argument for specialized memory
management.
Will allow the greatest number of type usage.
The FactoryException type will:
Provide type for exception reasoning.
Provide type for specializations to AbstractFactory.
The AbstractAllocator type will:
Provide default constructors and virtual destructors.
Provide operator assignment and equality overloads.
Provide instrumentation for the number of allocations and
deallocations.
Provide virtual instrumentation methods for the number of
space reuses.
Will allow the greatest number of type usage.
The AllocatorException type will:
Provide type for exception reasoning.
Provide type for specializations to AbstractAllocator.
2.1 User Interface Specifications
NA
2.2 Product Services
NA
2.3 External Interfaces and Database Requirements
NA
2.4 Error Handling
Because the deliverables are not
concrete, there is a non-issue, but, there will be Factory and
Allocator exception types.
2.5 Foreseeable Functional Changes and Enhancements
NA.
3. Non-Functional Requirements
Precondition constraints: None
Postcondition constraints:
None
Invarient constraints: None
3.1 Performance Requirements
NA
3.2 User Documentation and Other User Aids
This Document
Analysis Use-Case diagrams
Design class diagrams
3.3 Development Requirements
Standards: CoreLinux++ C++ Standards and
Guidelines
Will be part of the libcorelinux++ shared library.
3.4 Foreseeable Non-Functional Changes
NA
4. Remarks and Guidelines for Later Life Cycle Phases
TBD
5. Term Glossary
See Use Case and Class Reports
Copyright © 1999, 2000 by CoreLinux Consortium
This material may be distributed only subject to the terms and conditions set forth in the
Open Publication License
|