CoreLinux++
Functional Requirement Document Revision $Revision: 1.2 $ Last
Modified : Saturday, January 22, 2000
Title : Decorator Pattern
1. Introduction
Sometimes a client will want to add responsibilities to individual
objects, not to an entire class. To accomplish this dynamically, the
Decorator object encloses the component in another object that adds
the desired responsibilities. The Decorator conforms to the interface
of the component it decorates so that its presence is transparent to
the client.
1.1 Deliverables Overview
The participants in the Decorator pattern include:
- Component
-
Defines the interface for objects that can have responsibilities
added to them dynamically.
-
ConcreteComponent
-
Defines an object to which additional responsibilities can be
attached.
-
Decorator
-
Maintains a reference to a Component object and defines an interface
that conforms to Component's interface.
The deliverable is mostly vacuous in that we want to capture the
participants abstractions.
The CoreLinux++ team will deliver Decorator implementations for
specific cases as needed.
Users can utilize the participant abstractions as a basis for
creating their own Decorator implementation outside of the
libcorelinux++ library.
2. Functional Requirements
Decorator and participants will be publicly available for
extension.
2.1 User Interface Specifications
NA
2.2 Product Services
NA
2.3 External Interfaces and Database Requirements
NA
2.4 Error Handling
NA
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
TBD
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
|