策略設計模式

2021-07-22 19:16:16 字數 683 閱讀 8522

1)file中list()方法的策略設計模式

public string list(filenamefilter filter) 

arraylist v = new arraylist();

for (int i = 0 ; i < names.length ; i++)

} return (string)(v.toarray(new string[v.size()]));

}

設計需求:在此檔案下獲取我想要的名稱列表,想要的規則肯定是變化的,所以這個就是想要的策略,把策略當引數傳遞,比如我想要檔名大於3的檔名稱

public static void main(string args) 

});for (string name :

names)

}

感悟:file相當於擁有乙個屬性,就是獲取檔案列表,然後要對這個檔案列表進行處理,會有不同的方式,然後選擇填入策略進行處理

比如,你有乙個服務,能夠獲取到乙個類,或者乙個類的列表,你需要對其進行排序,或者複製,獲取從列表中獲取乙個值,則都可以用策略

重要的一點是,把變化的抽象出方法,如果是自己的方法,那就可以當做成模板模式,如果此變化抽象出方法是其他類的方法,不管是放入方法的引數,還是放入到類的屬性,都可以是策略模式

設計模式 策略設計模式

策略設計模式其實就是多型的使用,父類引用指向子類物件。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。策略模式的缺點其實也很明顯,在於策略模式把每一種具體的策略都封裝成乙個實現類,如果策略有很多的話,很顯然是實現類就會導致過多,顯得臃腫。案列 author de...

策略設計模式 Go語言設計模式 策略

策略設計模式 策略模式是一種行為設計模式。此模式允許在執行時不需要更改物件的型別定義時就能改變該物件的行為。用乙個例子來理解策略模式。假設構建乙個快取inmemorycache,它擁有固定的容量大小,當達到其最大容量時,快取中的某些舊項需要被逐出,這種驅逐可以通過幾種演算法來實現 現在的問題是如何將...

設計模式 策略模式

策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些方法完成的都是相同的工作,只是實現不同,他們可以用相同的方式呼叫所有的演算法,減少了演算法類和使用演算法類之間的耦合.優點 策略模式的strategy類層次為context定義了一系列可供重用的演算法和行為,繼承有助於吸取這些演算法中的公共...