היום נסתכל על תבנית העיצוב של גשר ב-Java. כאשר יש לנו מופעלי ממשק בשני רמות, הממשקים והמימושים, אז התבנית של גשר משמשת לפרידת הממשקים מהמימוש ולהסתרת פרטי המימוש מתוכניות הלקוח.
תבנית העיצוב של גשר
דומה לתבנית של סט אפטר, תבנית העיצוב של גשר היא אחת מתבניות העיצוב המבניות. לפי GoF, תבנית העיצוב של גשר היא:
לפרוד אבסטרקציה מהמימוש שלה כך ששניהם יכולים להשתנות באופן עצמאי
המימוש של תבנית העיצוב של גשר עוקב אחר הרעיון לעדיף הרכבה מעל הירושה.
דוגמת תבנית העיצוב של גשר ב-Java
אם נבחן את דפוס תכנון הגשר עם דוגמה, יהיה קל להבין. נניח כי יש לנו מורשת ממשקים בשני הממשקים ובמימושים כמו בתמונה למטה. כעת נשתמש בדפוס תכנון הגשר כדי לנתק את הממשקים מהמימושים. תרשים UML למחלקות ולממשקים לאחר החלקת דפוס הגשר יראה דומה לתמונה למטה. שים לב לגשר בין ממשקי Shape
ו־Color
ולשימוש ברכיב ביישום דפוס הגשר. כאן קוד Java עבור ממשקי Shape ו־Color. Color.java
//הרכיב – מממשק מבצע
package com.journaldev.design.bridge;
public interface Color {
public void applyColor();
}
Shape.java
package com.journaldev.design.bridge;
public abstract class Shape {
//קומפוזיציה - מממש
protected Color color;
//בנאי עם מממש כקלט
public Shape(Color c){
this.color=c;
}
abstract public void applyColor();
}
יש לנו מחלקות מימוש של משולש ופנטגון כפי שמוצג למטה. Triangle.java
package com.journaldev.design.bridge;
public class Triangle extends Shape{
public Triangle(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Triangle filled with color ");
color.applyColor();
}
}
Pentagon.java
package com.journaldev.design.bridge;
public class Pentagon extends Shape{
public Pentagon(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Pentagon filled with color ");
color.applyColor();
}
}
כאן הם מחלקות המימוש של RedColor ו־GreenColor. RedColor.java
package com.journaldev.design.bridge;
public class RedColor implements Color{
public void applyColor(){
System.out.println("red.");
}
}
GreenColor.java
package com.journaldev.design.bridge;
public class GreenColor implements Color{
public void applyColor(){
System.out.println("green.");
}
}
בואו נבחן את המימוש של דפוס הגשר שלנו עם תוכנית בדיקה. BridgePatternTest.java
package com.journaldev.design.test;
import com.journaldev.design.bridge.GreenColor;
import com.journaldev.design.bridge.Pentagon;
import com.journaldev.design.bridge.RedColor;
import com.journaldev.design.bridge.Shape;
import com.journaldev.design.bridge.Triangle;
public class BridgePatternTest {
public static void main(String[] args) {
Shape tri = new Triangle(new RedColor());
tri.applyColor();
Shape pent = new Pentagon(new GreenColor());
pent.applyColor();
}
}
הפלט של תוכנית הדוגמה של דפוס הגשר שלמעלה הוא:
Triangle filled with color red.
Pentagon filled with color green.
אמור לקורות הגשר יכול לשמש כאשר יש להם שניים מהיררכיות שונות באופן עצמאי, כשנרצה להסתיר את המימוש מיישום הלקוח.
Source:
https://www.digitalocean.com/community/tutorials/bridge-design-pattern-java