I have a standard GOF Strategy Pattern: client code holds a reference to an AbstractStrategy, which points to any one of several ConcreteStrategies deriving from or implementing the AbstractStrategy.
One ConcreteStrategy delegates to any of several other ConcreteStrategies, depending on its passed parameters, e.g.:
public class ConcreteStrategy0 {
public void doStrategy(SomeType someData) {
switch( somefunc(someData ) {
case 0: ConcreteStrategy1.singleton.doStrategy(someData); break;
case 1: ConcreteStrategy2.singleton.doStrategy(someData); break;
default: ConcreteStrategy3.singleton.doStrategy(someData); break;
}
}
This isn't quite a Coplien Envelope/Letter (as the intent isn't quite the same).
But does it have a name?