Quale motivo di progettazione viene utilizzato in questo scenario di delega?

3

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.

    
posta BlueDog 27.02.2015 - 20:58
fonte

1 risposta

1

Questo è il modello dell'adattatore. Stai adattando un Processor<T> in modo che possa essere utilizzato dove è previsto un Processor<Container<T>> .

    
risposta data 02.12.2015 - 05:11
fonte

Leggi altre domande sui tag