今天學習了設計模式中的策略模式,策略模式有三部分,一個抽象的類,或者是接口;一個具體的實現功能的類;
還有一個環境類。大體是這麼理解的,在第一部分中定義一個方法,當然沒有實現的,在第二部分實現這個方法,通常第二部分有許多個平行的類,這是爲了對第一部分定義的方法有不同實現;實現的總的效果就是你調用一個方法進行某一操作的時候,是調用第一部分的方法去操作的,所以具體實現的功能你說不確定的,因爲你不知道具體是誰實現了第一部分的方法;這樣一來同一個方法,隨着你傳遞的實例(即第二部分類的一個對象)不同,它實現的操作也將不同。
這麼講大家也許會覺得有點蒙,現在用代碼說明一下:
public interface StrategyTest
{
public int calculate(int a,int b);
}
public class AddTest implements StrategyTest
{
public int calculate(int a, int b)
{
return a + b;
}
}
public class SubTest implements StrategyTest
{
public int calculate(int a, int b)
{
return a - b;
}
}
public class Test
{
public static void main(String []args)
{
// StrategyTest strategy = new AddTest();
StrategyTest strategy = new AddTest();
System.out.println(strategy.calculate(4,5));
//當你執行System.out.println(strategy.calculate(4,5))的時候,你並不知道是具體的
//執行的加法還是減法,而起決定因素的是前面你傳給接口的實例不同而改變的
//輸出行的代碼不變的情況下,你用第一行就會是加法,第二行就會使減法
}
}
在我這裏沒用到開篇提到的第三部分,環境類,其實我覺得我這麼理解會更簡單,那個環境類就是起一個輔助作用罷了,策略模式的思路就是這樣的,要是想實現更復雜的應用還得再進一步熟悉掌握才行。。。。