תבנית עיצוב גשר ב-Java

היום נסתכל על תבנית העיצוב של גשר ב-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