標籤:
本文主要講java中的策略模式:一個可以根據不同的傳入參數而具有不同行為的方法,就叫策略模式。概念可能有點不好理解,具體看下面代碼:
import java.util.Arrays;/** * 策略模式 一個可以根據不同的傳入參數而具有不同行為的方法,就叫策略模式 * @author dsj 2015-8-3 下午1:15:41 */public class Celv { static String s ="a策略 B模式"; public static void main(String[] args) { myProcess(new Upcase(), s); myProcess(new Downcase(), s); myProcess(new Splitter(), s); } public static void myProcess(Process process,Object s){ System.out.print(process.name()); System.out.println(":"+process.process(s)); }}/** 基類提供了兩個公用發貨:擷取類名稱方法,處理方法 **/class Process { public String name() { return getClass().getSimpleName(); } Object process(Object input) { return input; }}/** Process的子類具有轉換字母為大寫的功能**/class Upcase extends Process{ /** * Override:重寫,他們的關係是父子關係,必須是方法名,參數的類型、個數、順序,以及傳回值都必須和父類相同才行。 * OverLoad:重載,他們的關係同類的不同方法,方法名相同其餘都可以不同 */ @Override String process(Object input) { return ((String)input).toUpperCase(); }}/** Process的子類,具有轉換字母為小寫功能 **/class Downcase extends Process{ @Override String process(Object input) { return ((String)input).toLowerCase(); }}/** Process子類,具有截取字串的功能 **/class Splitter extends Process{ @Override Object process(Object input) { return Arrays.toString(((String)input).split(" ")); }}
運行結果:
Upcase:A策略 B模式Downcase:a策略 b模式Splitter:[a策略, B模式]
java中的策略設計模式