您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)使用Java怎么實(shí)現(xiàn)命令模式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
一 點(diǎn)睛
某個(gè)方法需要完成某個(gè)行為,但這個(gè)行為的具體實(shí)現(xiàn)無法確定,必須等到執(zhí)行該方法時(shí)才可以確定。
例如:假設(shè)有個(gè)方法需要遍歷某個(gè)數(shù)組的數(shù)組元素,但無法確定在遍歷數(shù)組時(shí)如何處理這些元素,需要在調(diào)用該方法時(shí)指定具體的處理行為。
對(duì)于這樣一個(gè)需求,必須把處理行為作為參數(shù)傳入該方法,這個(gè)處理行為用編程實(shí)現(xiàn)就是一段代碼,可以考慮使用一個(gè)Command接口來定義一個(gè)方法,用這個(gè)方法來封裝處理行為。
二 代碼
1 Command接口
public interface Command { // 接口里定義的process()方法用于封裝“處理行為” void process(int[] target); }
2 PrintCommand類
public class PrintCommand implements Command { public void process(int[] target) { for (int tmp : target ) { System.out.println("迭代輸出目標(biāo)數(shù)組的元素:" + tmp); } } }
3 AddCommand類
public class AddCommand implements Command { public void process(int[] target) { int sum = 0; for (int tmp : target ) { sum += tmp; } System.out.println("數(shù)組元素的總和是:" + sum); } }
4 ProcessArray類
public class ProcessArray { public void process(int[] target , Command cmd) { cmd.process(target); } }
5 CommandTest類
public class CommandTest { public static void main(String[] args) { ProcessArray pa = new ProcessArray(); int[] target = {3, -4, 6, 4}; // 處理數(shù)組,具體處理行為取決于匿名內(nèi)部類 pa.process(target,new PrintCommand()); System.out.println("____________________"); pa.process(target,new AddCommand()); } }
三 運(yùn)行
迭代輸出目標(biāo)數(shù)組的元素:3
迭代輸出目標(biāo)數(shù)組的元素:-4
迭代輸出目標(biāo)數(shù)組的元素:6
迭代輸出目標(biāo)數(shù)組的元素:4
____________________
數(shù)組元素的總和是:9
四 類圖
Java中的集合主要分為四類:1、List列表:有序的,可重復(fù)的;2、Queue隊(duì)列:有序,可重復(fù)的;3、Set集合:不可重復(fù);4、Map映射:無序,鍵唯一,值不唯一。
看完上述內(nèi)容,你們對(duì)使用Java怎么實(shí)現(xiàn)命令模式有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。