Model de pod
Salt la navigare Salt la căutare
Modelul bridge este un model de proiectare ( model de proiectare) al programării orientate pe obiecte, care vă permite să separați „ interfața unei clase (ce se poate face cu clasa) de implementarea sa (așa cum o face). În acest fel puteți utiliza moștenirea pentru a evolua interfața sau implementarea separat.
Structura
Exemplu în Java
Următorul program va fi tipărit:
API1.cerc la 1.000000: 2.000000 rază 7.5000000 API2.cerc la 5.000000: 7.000000 rază 27.500000
/ ** „Implementator” * /
interfață DrawingAPI {
public nul drawCircle ( dublu x , dublu y , dublă rază );
}
/ ** „ConcreteImplementor” 1/2 * /
clasa DrawingAPI1 implementează DrawingAPI {
public void drawCircle ( dublu x , dublu y , dublă rază ) {
Sistem . afară . printf ( "API1.circle la% f:% f raza% f \ n" , x , y , raza );
}
}
/ ** „ConcreteImplementor” 2/2 * /
clasa DrawingAPI2 implementează DrawingAPI {
public void drawCircle ( dublu x , dublu y , dublă rază ) {
Sistem . afară . printf ( "API2.circle la% f:% f raza% f \ n" , x , y , raza );
}
}
/ ** „Abstracție” * /
clasa abstractă Shape {
protejat DrawingAPI drawingAPI ;
Formă protejată ( DrawingAPI drawingAPI ) {
aceasta . drawingAPI = drawingAPI ;
}
public abstract nul draw (); // nivel scăzut
public abstract void resizeByPercentage ( pct dublu ); // nivel inalt
}
/ ** „Abstracție rafinată” * /
clasa CircleShape extinde Shape {
dublu privat x , y , rază ;
publice CircleShape (double x, y dublu, dublu rază, DrawingAPI drawingAPI) {
super ( drawingAPI );
aceasta . x = x ; aceasta . y = y ; aceasta . raza = raza ;
}
// nivel scăzut, adică specific implementare
public nul tragere () {
desenAPI . drawCircle ( x , y , raza );
}
// la nivel înalt, adică specific abstract
public void resizeByPercentage ( pct dublu ) {
raza * = pct ;
}
}
/ ** „Client” * /
clasa BridgePattern {
public static void main ( String [] args ) {
Shape [] formes = new Shape [] {
nou CircleShape ( 1 , 2 , 3 , nou DrawingAPI1 ()),
nou CircleShape ( 5 , 7 , 11 , nou DrawingAPI2 ()),
};
pentru ( Formă formă : forme ) {
forma . resizeByPercentage ( 2.5 );
forma . draw ();
}
}
}
Elemente conexe
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere pe modele bridge