Híd (tervezési minta)

Ez a cikk publikálhatatlan munkákat vagy nem ellenőrzött nyilatkozatokat tartalmazhat (2014. október).

Segíthet referenciák hozzáadásával vagy a közzé nem tett tartalom eltávolításával. További részletekért lásd a beszélgetés oldalt .

A híd egy tervezési minta a strukturáló család, amely lehetővé teszi, hogy elválassza a felület egy osztály, és annak végrehajtását.

A konkrét rész (valós megvalósítás) ezután az elvontól (virtuális definíciótól) függetlenül változhat, amennyiben tiszteletben tartja az őket összekötő kapcsolódó átírási szerződést (a funkciók / módszerek aláírásainak való megfelelés kötelezettsége és azok megadása a megvalósítás fizikai testével).

jegyzet

Ezt a logikai strukturálási modellt különösen sok távoli hozzáférési, távoli kommunikációs és üzenetküldési technológia szemlélteti. Alacsony szintű szempontból párbeszédes technikákkal kapcsolatos - találunk például: távoli hívási eljárásokat (RPC) vagy távoli módszer meghívásokat (Java RMI); és globálisan, magasabb szinten kapcsolódik az elosztott architektúrákhoz, például az ORB-khez vagy más SOA-khoz .

Figyelem

Ne tévessze össze ezt a mintát az adapterrel , amelyet arra használnak, hogy az egyik típus interfészét egy másik típushoz igazítsa, és ezért gondoskodjon arról, hogy egy vagy több osztály integrálja az adott interfészből származó típust (meghosszabbítva ezzel az öntött kerületét).

A hidat arra használják, hogy elválasszák az interfész (más néven csonk , a „ csonk ” vagy „sarok”) definícióját a megvalósítástól (más néven csontváz , amely a megvalósított logikai jelentés „csontvázat” szimbolizálja). Így ily módon az osztály konkrét megvalósítását fejlesztheti anélkül, hogy módosítania kellene az ügyfélrész által kezdeményezett hívást, amely ezután az interfész (maga invariáns) funkcióinak / metódusainak aláírására utal.

Példa az Eiffel-ben

Példa írt Eiffel .

deferred class ABSTRACTION feature implementator: IMPLEMENTATOR make (a_representation: like implementator) do implementator := a_representation end do_something deferred end end class REFINED_ABSTRACTION inherit ABSTRACTION create make feature do_something do -- use `implementator' end end deferred class IMPLEMENTATOR feature do_something deferred end end class IMPLEMENTATION_A inherit IMPLEMENTATOR feature do_something do print ("Implementation A") end end class IMPLEMENTATION_B inherit IMPLEMENTATOR feature do_something do print ("Implementation B") end end

Java példa

Példa Java- ban írva, a Java RMI könyvtárak használatával .

Fájl bridge/Stub.java :

package bridge; import java.rmi.Remote; import java.rmi.RemoteException; public interface Stub extends Remote { public void doSomething() throws RemoteException; }

Fájl bridge/Skeleton.java:

package bridge; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class Skeleton extends UnicastRemoteObject implements Stub { private static final long serialVersionUID = 42L; protected Skeleton() throws RemoteException {super();} public void doSomething() throws RemoteException {System.out.println("Invocation de la méthode doSomething()");} }