Structural Design Patterns

Extensibility

Description

Provides a framework of modules that allow addition of functionality at a later date.

Purpose

Inheritance provides a very basic for extensibility. The extensibility pattern expands on this by dividing the project into modules.

Design

There are several ways to accomplish the extisibility pattern. You can create modules that can be either instantiated by another module or included as part of an abstract class.

Example

One example would be scripting. Dividing the problem up into individual units that can be plugged in as needed can significantly increase the ability to expand the system. One could also only load the modules that were needed for the specific task.

Criticisms

The extensibility pattern is not very well defined. It is close to a basic design principle but several sources separate it out as a specific pattern.