5

Come ho capito entrambi gli schemi Adapter e Proxy rendono due classi/oggetti distinti/diversi compatibili con ciascuno per la comunicazione. Entrambi sono modelli strutturali. Ho capito che entrambi sono molto simili tra loro.Qual è la differenza esatta tra i modelli Adapter e Proxy?

Qualcuno può spiegare che cosa esattamente rendono (s) diverso?

MODIFICA: Ho passato la domanda this. Ma preferirei avere uno stretto confronto tra Adapter e Proxy.

+2

Possibile duplicato (http: // StackOverflow. it/questions/350404/how-do-the-proxy-decorator-adapter-and-bridge-patterns-differ) –

+0

@michael_j_ward L'avevo passato, ma avrei preferito un confronto ravvicinato tra questi 2. Thnx comunque . –

risposta

10

Adapter:

  1. Esso permette due interfacce estranei a lavorare insieme attraverso i diversi oggetti, possibilmente giocando stesso ruolo.
  2. Modifica l'interfaccia originale. Schema

UML:

enter image description here

Potete trovare maggiori informazioni su questo modello con il codice di esempio di lavoro in questo post SE:

Difference between Bridge pattern and Adapter pattern

Proxy:

Il proxy fornisce un surrogato o un segnaposto per un altro oggetto per controllarne l'accesso.

diagramma UML:

enter image description here

Ci sono situazioni comuni in cui il modello è applicabile proxy.

  1. Un delega virtuale è un segnaposto per oggetti "costoso creare". L'oggetto reale viene creato solo quando un client prima richiede/accede all'oggetto.
  2. Un proxy remoto fornisce un rappresentante locale per un oggetto che risiede in un diverso spazio indirizzo. Questo è ciò che fornisce il codice "stub" in RPC e CORBA.
  3. A proxy di protezione controlla l'accesso a un oggetto master sensibile. L'oggetto "surrogato" verifica che il chiamante disponga delle autorizzazioni di accesso richieste prima di inoltrare la richiesta.
  4. Un Proxy fornisce l'accesso sofisticato per alcuni oggetti, come il monitoraggio del numero di riferimenti a un oggetto e di negare l'accesso se si raggiunge un certo numero, così come il caricamento di un oggetto dal database in memoria su richiesta

Per codice di lavoro, dare un'occhiata all'articolo tutorialspoint sul proxy.

differenze fondamentali:

  1. adattatore fornisce un'interfaccia diversa per il suo soggetto. Proxy fornisce la stessa interfaccia
  2. adattatore è destinato a cambiare l'interfaccia di un oggetto esistente

Potete trovare ulteriori informazioni su questi modelli in sourcemaking articoli di proxy e adapter articoli.

Altri articoli utili: proxy da DZone

+0

Grazie mille per il tuo impegno nel migliorare la tua risposta ancora e ancora :) –

+0

Ho finito con le mie modifiche :) –

2

Da here:

adattatore fornisce un'interfaccia diversa per il suo soggetto. Proxy fornisce la stessa interfaccia.

Si potrebbe pensare ad un adattatore come qualcosa che dovrebbe rendere una cosa adatta ad un'altra incompatibile se collegata direttamente. Quando viaggi all'estero, ad esempio, e hai bisogno di un adattatore per prese elettriche.

Ora un Proxy è un oggetto della stessa interfaccia e probabilmente la stessa classe di base (o una sottoclasse). Si limita a "fingere" di essere (e si comporta come) l'oggetto reale, ma invece inoltra il comportamento effettivo (calcoli, elaborazione, accesso ai dati, ecc.) A un oggetto sottostante e di riferimento.

Estrapolando all'analogia elettrica, sarebbe OK che l'uso di un adattatore è visibile al client - cioè, il client "sa" che viene utilizzato un adattatore - mentre l'uso di un proxy potrebbe essere più spesso nascosto, o "trasparente" - il client pensa che venga usato un oggetto reale, ma è solo un proxy.

0

Differenza tra pattern Adapter e Pattern Proxy

ADATTATORE RETICOLO

  1. indiana caricatore mobile (client) non si adatta in USA interruttore consiglio (SERVER).
  2. È necessario utilizzare l'adattatore in modo che il caricatore mobile indiano (CLIENT) possa essere inserito nel quadro degli Stati Uniti (SERVER).
  3. Dal punto 2, è possibile comprendere direttamente l'adattatore dei contatti CLIENT. Quindi adattatore contatta il server.

DELEGA MODELLO

  • In scheda client modello direttamente adattatore contatti. Non contatta il server.
  • In modalità proxy, proxy e server implementano la stessa interfaccia. Il cliente chiamerebbe la stessa interfaccia.

comprensione attraverso CODICE

class client{ 
    public void main(){ 
     //proxy pattern 
     IServer iserver = new proxy(); 
     iserver.invoke(); 

     //adapter pattern 
     IAdapter iadapter = new adapter(); 
     iserver.iadapter(); 
    } 
} 

class server implements IServer{ 
    public void invoke(){} 
} 

class proxy implments IServer{ 
    public void invoke(){} 
} 

class adapter implements IAdapter{ 
    public void invoke(){} 
} 

Riferimento: [? Come i modelli proxy, decoratore, adattatore e Ponte differiscono] Difference between Adapter pattern and Proxy Pattern

Problemi correlati