日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

面向接口编程(二)

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向接口编程(二) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  上一周我寫(xiě)了采取簡(jiǎn)單工廠(chǎng)模式的面向接口編程的方法,這周我來(lái)介紹另一種模式——命令模式。

  我們或許會(huì)遇到這樣的問(wèn)題,當(dāng)某個(gè)方法要完成某一行為時(shí),這個(gè)行為的具體實(shí)現(xiàn)無(wú)法實(shí)現(xiàn)確定,必須在調(diào)用這個(gè)方法時(shí)才可以確定,這種場(chǎng)景就是所謂的命令模式,但是Java并不能直接將方法體當(dāng)參數(shù)傳入,這時(shí)我們就用到了面向接口編程的方式。

  假如我們要定義一個(gè)處理數(shù)組的類(lèi)ArrayHandler,但這是不知道具體怎么處理,首先要有一個(gè)借口去定義數(shù)組處理方法(就是一個(gè)數(shù)組處理規(guī)范)

  

public interface Handler {public void handler(int target[]); }

?

定義ArrayHandler,我們只要將接口當(dāng)做參數(shù)傳入即可

public class ArrayHandler {//Handler是處理數(shù)組的接口,利用Handler處理目標(biāo)數(shù)組public void handler(int target[],Handler hd){hd.handler(target);}
  //測(cè)試
public static void main(String[] args){int[] target = {1,2,3,4,5,6,7,8,9,10,11};ArrayHandler ah = new ArrayHandler();ah.handler(target, new PrintArray());ah.handler(target, new AddArray());}
}

下面是AddArray和PrintArray的代碼,很簡(jiǎn)單就可以實(shí)現(xiàn),這樣就做到了讓ArrayHandler和處理行為分離。程序使用Handler接口代表對(duì)數(shù)組的處理,只有等到真正調(diào)用handler方法時(shí)

才確定對(duì)數(shù)組的處理行為。

public class AddArray implements Handler{int sum = 0;public void handler(int[] target) {for(int index=0;index<target.length;index++){sum += target[index];}System.out.println("目標(biāo)數(shù)組和為:" + sum);}}
public class PrintArray implements Handler{public void handler(int[] target) {System.out.print("目標(biāo)數(shù)組為:" + target[0] + " ");for(int index=1;index<target.length;index++){if(index%10 !=0)System.out.print(target[index] + " ");elseSystem.out.println(target[index] + " ");}}}

  總結(jié)兩種面向接口編程的方式,區(qū)別就是簡(jiǎn)單工廠(chǎng)模式是將方法行為規(guī)范單做成員變量傳入,以Computer與Output為例,Output是Computer的一個(gè)功能,這個(gè)功能是已知的,

就將Output當(dāng)做Computer的一個(gè)Field。

  而Handler對(duì)于ArrayHandler在調(diào)用之前是未知的,這時(shí)將Handler當(dāng)做方法處理時(shí)的傳入?yún)?shù),在調(diào)用這個(gè)方法時(shí)才能確定。

轉(zhuǎn)載于:https://www.cnblogs.com/Shevo/p/8449653.html

總結(jié)

以上是生活随笔為你收集整理的面向接口编程(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。