Anna Buschmann, partitioning a Lego building © Frank Buschmann
Components are the implementation building blocks that provide well-defined services to their clients. How these services are realized is generally of no interest to the clients. While this black-box view is beneficial for component users, component developers cannot ignore the need for a internal component design. This chapter, therefore, presents six patterns that help to structure the implementation of a component. The focus of these patterns is on general component decomposition and the support for various component deployment scenarios in a distributed system.
Component-based software development is a key technology in modern software construction. The core idea is that software can be composed of well-defined modular building blocks, each providing a specific, coherent, and self-contained service through an interface. A defining characteristic of components and their composability is that they are based on a strong form of encapsulation and a range of choices concerning application binding time and location. This strong encapsulation of implementation details yields the two primary benefits of component-based software development:
Productivity. If the components that are used in the development of an application already exist or can be purchased as third party products, this can markedly ...