Attualmente sto piegando alcune API framework per adattarle al mio caso. Il framework fornisce interfacce generiche come
public interface Processor<T> {
T process(T t);
}
con varie implementazioni. Questi sono usati da alcune classi come
public SomeClass<T> {
public SomeClass(Processor<T> p, [...]) {}
}
Per adattarsi al mio caso, ho bisogno di SomeClass
per comportarmi diversamente senza influenzare il Processor
s esistente.
Per fare ciò, SomeClass
deve operare su% wra T
s. Quindi:
SomeClass<Container<T>>
Come detto, questo non dovrebbe influenzare il Processor
s che deve ancora funzionare su T
. Per poterlo fare ho scritto delegators che unwrap T
dal contenitore e quindi delegare l'elaborazione di T
:
public class BoxDelegatingProcessor<T> implements Processor<Container<T>> {
private Processor<T> delegatee;
public Container<T> process(Container<T> wrapped) {
return wrap(delegatee.process(unwrap(wrapped));
}
[...]
}
Quale modello di design (secondo GoF) è questo? Non penso che sia Decorator, perché non esiste una vera e propria "funzionalità"? È più un tipo di adattatore.