Treci la conținutul principal

Ce este

Șablonul Punte (Bridge) împarte un concept în două dimensiuni independente, astfel încât acestea să poată varia separat. De exemplu, forme și moduri de a le desena; mesaje și moduri de a le trimite.

Fără punte obții câte o clasă pentru fiecare combinație — VectorCircle, TextCircle, VectorSquare... — iar lista se tot înmulțește. Cu puntea, o parte o păstrează pe cealaltă ca un câmp: orice formă funcționează cu orice renderer.


Exemplu: forme și renderere

2 renderere × 2 forme ar însemna 4 clase combinate; aici sunt 2 + 2, conectate printr-un singur câmp de tip protocol — puntea.

Orice formă, orice renderer

Același cerc se desenează în două moduri doar pentru că păstrează un alt renderer. Adăugarea unui renderer sau a unei forme înseamnă o singură clasă nouă, niciodată un rând întreg de combinații.

Prompt
Scrie un program Python cu șablonul Punte (Bridge): un protocol Renderer (VectorRenderer și TextRenderer) ca o dimensiune și o clasă de date (dataclass) Shape care păstrează un nume și un renderer ca cealaltă dimensiune. Desenează un cerc cu ambele renderere și un pătrat cu unul singur, afișând fiecare linie.
Ieșire: program Python complet

Când să îl folosești

Folosește-l atunci când observi o explozie de combinații: fiecare tip nou pe o axă te obligă să creezi clase noi pe cealaltă. Două axe independente — separă-le.

Renunță la el atunci când o dimensiune are exact o singură implementare. O punte spre un singur mal este doar un debarcader.


Avantaje și dezavantaje

Avantaje: cele două părți cresc independent; combinațiile vin gratuit; fiecare parte poate fi testată separat.

Dezavantaje: mai multă indirectare de la început; recunoașterea celor două axe din timp este cu adevărat dificilă — o separare prea timpurie creează o abstractizare de care nu are nevoie nimeni.