Designing Component APIs
When you identify a component within your application, you should begin by thinking about the purpose it’ll serve and how it’ll be used by other components. Some typical kinds of components are information managers, processors, and facades. Information managers track state—either in-memory or in an external data store—providing operations to create, modify, or query that data. Processor components are all about data transformation or computation. Facade components exist primarily to make another external system accessible (and pluggable).
In reality, most components don’t fit neatly into these boxes but instead combine one or more aspects into a component that fulfills the unique needs of your own application.
The first ...