Kevlin and Frank at JAOO 2006, interacting about objects © Maiskou Nielsen
An application architecture's task is not always just a simple matter of calling methods on objects in other components. In many cases, an application defines a framework of some kind for use by others, whether for simple extension or for plugging in. A framework that encapsulates a model of interaction tends to have more sophisticated inter-object choreography than a component that offers simpler, more passive object types. This chapter presents a number of patterns that support interaction between objects that reside in different components of an application, framework, or product line.
Applications that are built on top of a component framework can take advantage of the framework's execution, resource, and relationship management features, in exchange for agreeing to abide by the terms of the framework's collaboration protocols. Collaboration between objects in such applications often involves much more than just calling synchronous methods and services on one another, passing parameters along with the calls, and collecting the results by way of immediate return. Although collaboration between component objects often follows this simple model, even in sequential programming it may not hold for an entire application.
The following issues arise when designing such interactions, ...