
Bridge

Decouple an abstraction from its implementation so that the two can vary independently.
from the gang of the four
Source Code
/** * Defines Abstraction interface. Stores reference to implementation. * * @role __Abstraction */ public abstract class Abstraction { /** Reference to actual implementation */ private Implementor impl; /** * @return implementation-in-action. */ protected Implementor getImplementor() { return impl; } /** * This sample operation delegates call to particular implementation */ public void someOperation() { getImplementor().someOperationImpl(); } } /** * Concrete implementation */ public class ConcreteImplementorA extends Implementor { /** @see patterns.gof.bridge.Implementor#someOperationImpl() */ public void someOperationImpl() { // provide implementation here } } /** * Concrete implementation */ public class ConcreteImplementorB extends Implementor { /** @see patterns.gof.bridge.Implementor#someOperationImpl() */ public void someOperationImpl() { // provide implementation here } } /** * Defines interface for implementation classes. Is not oblidged to provide * one-to-one correspondence to interface of Abstraction. * * @role __Implementor */ public abstract class Implementor { /** Implement this method to provide implementation-specific behavior */ public abstract void someOperationImpl(); }