初識策略設計模式

ん心之所向ヅ發表於2019-03-19

什麼是策略設計模式:
它定義了演算法家庭,將其分別封裝起來,讓它們之間可以互相替換,通過此設計模式讓演算法的變化,不會影響到使用演算法的客戶。
核心思想:
把演算法提取出來放到一個獨立的物件中,使用策略模式修改之後,程式碼的可讀性和擴充套件性都有了很大的提高。
好了,廢話不多說,就先簡單的介紹到這裡,接下來用一個簡單的案例來看一下這種模式,程式碼如下:

一、首先定義一個策略介面:

   public interface MathUtil {
		int getNum(int a, int b);
		}

二、然後定義兩個子類都實現了上述介面

這個類用於實現加法計算:
public class AddMethod implements MathUtil {

@Override
public int getNum(int a, int b) {
	return a + b;
}
}

這個類用於實現減法計算:
public class MinusMethod implements MathUtil {

@Override
public int getNum(int a, int b) {
	return a - b;
}
}

三、寫上一個演算法的集合類

public class Count {
	public int getResult(int[] num, MathUtil util)  {
		return util.getNum(num[0], num[1]);
	}
}

四、最後,測試程式碼在呼叫getResult方法時,只需要顯示地指明需要使用哪一個策略物件就可以了:

public class Test {
	public static void main(String[] args) {
		Count count = new Count();
		int a = count.getResult(new int[] { 8, 4 }, new AddMethod());
		int b = count.getResult(new int[] { 9, 4 }, new MinusMethod());
		System.out.println(a);
		System.out.println(b);
	}
	}

本人菜鳥一隻,如果哪裡有寫的不對的地方,希望大牛們指出來,我會修正的,謝謝~~~

相關文章