Next: Maximize composibility.
Up: Principles
Previous: Use layering.
- Make it easy to instantiate and support the component.
- Use standardized interfaces on helpers.
- Use stateless servers as helpers
- Use service-based not object-based specifications.
- Impose weaker constraints on helpers.
- Have component give up control over certain functions.
- Allow helpers to dynamically change (don't hard-wire)
- Use the most abstract component interface specification (e.g.,
base class) as a helper (pointers to helper in C++).
- Use relays and name servers (polymorphism via dynamic means).
Relays accept generic service requests and forward them to
appopriate components, while name servers tell clients about
components that can perform services.
- Strategies differ according to actual mechanisms used for
dynamic connections (procedure calls, RPC (Remote procedure
calls), message sends, events, pipes, etc.). But rely on the
weakest sufficient protocol.
Doug Lea
Sat Apr 8 09:58:22 EDT 1995