Navigation:  Application Architecture > Putting it All Together >

Designing for Extensibility

Previous pageReturn to chapter overviewNext page

In the last section we extended the desktop with a tool and a component.  How do we make our component extensible so that others can extend it?

One strategy would be to define a custom extension point.  For example, if we knew that we wanted spell-checking functionality for the editor, and wanted to allow for pluggable spell-checkers, we could define an ISpellChecker interface and a SpellCheckerExtensionPoint, allowing others to provide different spell-checker implementations.

But what if we don’t have a specific kind of pluggable functionality in mind- what if we just want to make the component extensible in a more general sort of way, so that other developers can add toolbar buttons or menu items – actions – that will act on our component?

Recall from the discussion on the plugin/extension architecture that this general means of extensibility is provided by Tools.  It seems that we need to define a new extension point based on the ITool interface, which is specific for tools that act on our text editor.