Abstraction and interfaces
Extension points make use of both abstraction and interfaces to permit and encourage reuse of functionality.
In the following diagram, Deposit Money declares an extension point called Transfer to savings. If we consider this to be an existing piece of code, and for the sake of this example, if we want to create a new Savings Account object, we can extend the functionality already provided by Deposit Money and use this to implement a new feature called Savings Account, which extends Deposit Money. This means that it will use most of the Deposit Money functionality, and it will also offer additional functionality of its own.
In another example, we are extending the existing Open Account
code to Add Joint Account Holder
. This uses many of the Open Account
methods, but also declares some methods that are specific to a second applicant. The following diagram shows the relations:
In cases where we have more than one application, we can extend Open Account to create a new...