Java作為一門廣泛應用于企業級應用及其他各方面領域的編程語言,其橋接和裝飾兩種設計模式被廣泛應用于軟件開發。
Java橋接則是一種很重要的設計模式,它主要用于連接應用程序的兩個部分。Java橋接模式將抽象部分與它的實現部分分離開來,從而讓它們可以獨立變化。
public interface DrawAPI { public void drawCircle(int radius, int x, int y); } public class RedCircle implements DrawAPI { public void drawCircle(int radius, int x, int y) { System.out.println("Drawing Circle[ color: red, radius: " + radius + ", x: " + x + ", " + y + "]"); } } public abstract class Shape { protected DrawAPI drawAPI; protected Shape(DrawAPI drawAPI){ this.drawAPI = drawAPI; } public abstract void draw(); } public class Circle extends Shape { private int x, y, radius; public Circle(int x, int y, int radius, DrawAPI drawAPI) { super(drawAPI); this.x = x; this.y = y; this.radius = radius; } public void draw() { drawAPI.drawCircle(radius,x,y); } }
另外,Java裝飾模式則是為已有的對象添加額外的功能,同時又不改變其結構的一種模式。Java裝飾模式在不必增加子類的情況下,使用不同的組合來達到不同的目的。這種類型的設計模式屬于結構型模式,它是作為現有的類的一個包裝。
public interface Pizza { public String getDescription(); public double getCost(); } public class PlainPizza implements Pizza { public String getDescription() { return "Thin dough"; } public double getCost() { System.out.println("Cost of Dough: " + 4.00); return 4.00; } } public abstract class ToppingsDecorator implements Pizza { protected Pizza tempPizza; public ToppingsDecorator(Pizza newPizza) { tempPizza = newPizza; } public String getDescription() { return tempPizza.getDescription(); } public double getCost() { return tempPizza.getCost(); } } public class Cheese extends ToppingsDecorator { public Cheese(Pizza newPizza) { super(newPizza); System.out.println("Adding Cheese"); } public String getDescription() { return tempPizza.getDescription() + ", Cheese"; } public double getCost() { System.out.println("Cost of Cheese: " + .50); return tempPizza.getCost() + .50; } }
Java橋接和裝飾都是非常重要的設計模式,它們的應用可以進一步提高Java編程的功效和實用性。