11. Extensibility Patterns

A goal in designing software systems is the ability to extend the system without modifying the existing codebase. Abstraction plays a central role in accomplishing this goal, but simply adding new functionality to an existing system is only part of the battle. We also want to be able to deploy those new additions without redeploying the entire application. The extensibility patterns focus on helping us achieve this goal. The extensibility patterns include

Abstract Modules: Depend upon the abstract elements of a module.

Implementation Factory: Use factories to create a module’s implementation classes.

Separate Abstractions: Place abstractions and the classes that implement them in separate modules.

Abstract Modules ...

Get Java Application Architecture: Modularity Patterns with Examples Using OSGi now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.