Java是一種廣泛應用于軟件開發的編程語言,它支持多種設計模式,其中橋接模式和策略模式是兩種常用的模式。下面我們來分別介紹一下這兩種模式的實現。
橋接模式是一種結構性的設計模式,它將抽象部分與實現部分分離開來,使它們可以獨立變化。在橋接模式中,抽象部分和實現部分分別由抽象類和實現類來定義,它們通過一個橋接接口進行連接。
// 抽象類 public abstract class AbstractShape { protected DrawAPI drawAPI; public AbstractShape(DrawAPI drawAPI) { this.drawAPI = drawAPI; } public abstract void draw(); } // 具體實現類 public class Circle extends AbstractShape { 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); } } // 橋接接口 public interface DrawAPI { public void drawCircle(int radius, int x, int y); }
策略模式是一種行為性的設計模式,它定義了一系列算法,將每個算法封裝起來,并使它們可以互換。策略模式讓算法的變化獨立于使用算法的客戶端。
// 策略接口 public interface SortStrategy { public void sort(int[] numbers); } // 具體實現類 public class BubbleSort implements SortStrategy { public void sort(int[] numbers) { // 冒泡排序算法實現 } } // 策略上下文 public class Sorter { private SortStrategy sortStrategy; public Sorter(SortStrategy sortStrategy) { this.sortStrategy = sortStrategy; } public void setSortStrategy(SortStrategy sortStrategy) { this.sortStrategy = sortStrategy; } public void sort(int[] numbers) { sortStrategy.sort(numbers); } }
橋接模式和策略模式各有其優點,具體使用要根據實際情況來選擇。橋接模式主要強調可擴展性,當需要增加新的抽象類或實現類時,只關注新增的部分即可;而策略模式主要強調可維護性,當代碼需要修改時,只需要修改具體實現類即可。