|
Thursday, 20 January 2005 21:15 |
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();
}
|
|
Last Updated ( Saturday, 18 June 2005 00:10 )
|