Java面向接口編程之命令模式實(shí)例詳解
本文實(shí)例講述了Java面向接口編程之命令模式。分享給大家供大家參考,具體如下:
一 點(diǎn)睛
某個(gè)方法需要完成某個(gè)行為,但這個(gè)行為的具體實(shí)現(xiàn)無(wú)法確定,必須等到執(zhí)行該方法時(shí)才可以確定。
例如:假設(shè)有個(gè)方法需要遍歷某個(gè)數(shù)組的數(shù)組元素,但無(wú)法確定在遍歷數(shù)組時(shí)如何處理這些元素,需要在調(diào)用該方法時(shí)指定具體的處理行為。
對(duì)于這樣一個(gè)需求,必須把處理行為作為參數(shù)傳入該方法,這個(gè)處理行為用編程實(shí)現(xiàn)就是一段代碼,可以考慮使用一個(gè)Command接口來(lái)定義一個(gè)方法,用這個(gè)方法來(lái)封裝處理行為。
二 代碼
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相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
springboot 實(shí)現(xiàn)bean手動(dòng)注入操作
這篇文章主要介紹了springboot 實(shí)現(xiàn)bean手動(dòng)注入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖
在當(dāng)前的開(kāi)發(fā)中Spring Boot開(kāi)發(fā)框架已經(jīng)成為主流,下面這篇文章主要給大家介紹了關(guān)于IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Java實(shí)現(xiàn)鼠標(biāo)模擬與鍵盤(pán)映射
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)鼠標(biāo)模擬與鍵盤(pán)映射,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
spring 整合kafka監(jiān)聽(tīng)消費(fèi)的配置過(guò)程
這篇文章主要介紹了spring 整合kafka監(jiān)聽(tīng)消費(fèi)的配置過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
SpringBoot ThreadLocal 簡(jiǎn)單介紹及使用詳解
ThreadLocal 叫做線程變量,意思是 ThreadLocal 中填充的變量屬于當(dāng)前線程,該變量對(duì)其他線程而言是隔離的,也就是說(shuō)該變量是當(dāng)前線程獨(dú)有的變量,這篇文章主要介紹了SpringBoot ThreadLocal 的詳解,需要的朋友可以參考下2024-01-01
java工具類實(shí)現(xiàn)文件壓縮zip以及解壓縮功能
這篇文章主要給大家介紹了關(guān)于java工具類實(shí)現(xiàn)文件壓縮zip以及解壓縮功能的相關(guān)資料,文中主要使用使用的是hutool工具類,Hutool是一個(gè)Java工具類庫(kù),由國(guó)內(nèi)的程序員loolly開(kāi)發(fā),目的是提供一些方便、快捷、實(shí)用的工具類和工具方法,需要的朋友可以參考下2024-02-02
簡(jiǎn)單易懂Java反射的setAccessible()方法
本文主要介紹了簡(jiǎn)單易懂Java反射的setAccessible()方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲
這篇文章主要為大家詳細(xì)介紹了JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12

