1. 程式人生 > >java策略模式

java策略模式

lec i++ inter auto 情況 抽象 ava sele arr

定義:

  是對於算法的包裝,把使用算法的責任和算法本身分隔,委派給不同的對象管理。策略模式通常把一個系列的算法包裝到一系列的策略類裏面,作為一個抽象策略類型的子類型。就是:“準備一組算法,並將每一個算法封裝起來,使得它們可以互換。”

意圖:

  針對一組算法,將沒喲個算法封裝到具有共同接口的獨立類中,從而使得它們可以互相替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。



public class StraregyDemo { public static void main(String[] args) { // TODO Auto-generated method stub int[] array = {5,66,88,21,58,99}; BubbleSort bSort = new BubbleSort(); SelectSort sSort = new SelectSort(); Context con1 = new Context(bSort); Context con2 = new Context(sSort); con1.sort(array); con1.printArray(array); con2.sort(array); con2.printArray(array); } } class Context{ private iSort sort = null; public Context(iSort sort) { this.sort = sort; } //本身沒有實現排序方法,而是調用排序方法 public void sort(int[] array) { sort.sort(array); } public void printArray(int[] array) { for(int i = 0;i<array.length;i++) { System.out.print(array[i]+" "); } } } interface iSort{ void sort(int[] array); } //冒泡排序法 class BubbleSort implements iSort{ public void sort(int[] array) { System.out.println("冒泡排序法:"); for(int i = 0;i<array.length;i++) { for(int j = 0;j<array.length-i-1;j++) { if(array[j]>array[j+1]) { int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } } } //選擇排序法 class SelectSort implements iSort{ public void sort(int[] array) { System.out.println("選擇排序法:"); for(int i = 0;i<array.length;i++) { int min = i; for(int j = i+1;j<array.length;j++) { if(array[min]>array[j]) { min = j; } } if(i!= min) { int temp = array[i]; array[i] = array[min]; array[min] = temp; } } } }

java策略模式