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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 接口编程_JAVA面向接口编程

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

一、什么是面向接口編程

要正確地使用Java語言進(jìn)行面向?qū)ο蟮木幊?#xff0c;從而提高程序的復(fù)用性,增加程序的可維護(hù)性、可擴(kuò)展性,就必須是面向接口的編程。面向接口的編程就意味著:開發(fā)系統(tǒng)時,主體構(gòu)架使用接口,接口構(gòu)成系統(tǒng)的骨架。這樣就可以通過更換實(shí)現(xiàn)接口的類來更換系統(tǒng)的實(shí)現(xiàn)。

例如:在上節(jié)示例中,Java接口Introduceable就是系統(tǒng)骨架的一個重要組成部分,這個Java接口定義了一個方法:detailo中心類和教員類分別實(shí)現(xiàn)了Java接口Introduceable,因此具有了不同的detail方法實(shí)現(xiàn)。在School2類中,print方法接收的參數(shù)類型是Introduceable,這樣,就可以向print方法傳遞任意一個Introduceable接口的實(shí)現(xiàn)類,在運(yùn)行時,Java虛擬機(jī)會根據(jù)實(shí)際創(chuàng)建的對象類型調(diào)用不同的方法實(shí)現(xiàn)。這就意味著:可以通過更換實(shí)現(xiàn)接口的類來更換系統(tǒng)的實(shí)現(xiàn)。

二、面向接口編程的示例

接下來通過一個示例詳細(xì)講解面向接口編程的實(shí)現(xiàn)過程。

案例需求的效果圖如圖1所示。

升級系統(tǒng),要求如下:

★ 打印機(jī)有多種類型,比如:黑白打印機(jī)、彩色打印機(jī)等。

★ 中心可能配備其中任意一款打印機(jī),負(fù)責(zé)打印教員或者中心的詳細(xì)信息。

★ 系統(tǒng)要具備良好的可擴(kuò)展性與可維護(hù)性。

圖1 使用不同類型的打印機(jī)進(jìn)行打印

采用面向接口編程的方式實(shí)現(xiàn)可以分為3個步驟。

1.抽象出Java接口

分析:由于黑白、彩色打印機(jī)都存在一個共同的方法特征:print,而且黑白、彩色打印機(jī)對print方法有各自不同的實(shí)現(xiàn),因此可以抽象出一個Java接口PrinterFace(代表打印機(jī)),在其中定義print方法。

具體實(shí)現(xiàn)代碼如下:

折疊

Java 代碼

package?Java.sg.ch03;

publicinterfacePrinterFace?{

//定義打印方法

publicvoicl?print?(String?content);

}

2.實(shí)現(xiàn)Java接口

分析:在第一步中已經(jīng)抽象出Java接口PrinterFace,并在其中定義了print方法。由于黑白、彩色打印機(jī)對print方法有各自不同的實(shí)現(xiàn),因此在第2步中,要讓黑白、彩色打印機(jī)實(shí)現(xiàn)PrinterFace接口,各自實(shí)現(xiàn)print方法。

彩色打印機(jī)代碼實(shí)現(xiàn)如下:

折疊

Java 代碼

package?Java.sg.ch03;

publicclassColorPrinterimplements

PrinterFace?{

/**

*?打印方法

*/

publicvoidprint(String?content)?{

System.out.println("彩色打印?:");

System.out.println(content);

}

}

黑白打印機(jī)代碼實(shí)現(xiàn)如下:

折疊

Java 代碼

package?Java.sg.ch03;

publicclassBlackPrinterimplements

PrinterFace?{

/**

*?打印方法

*/

publicvoidprint(String?content)?{

System.out.println("黑白打印?:");

System.out.println(content);

}

}

3.使用Java接口

經(jīng)驗(yàn):現(xiàn)在,Java接口及其實(shí)現(xiàn)類都已經(jīng)創(chuàng)建完畢,接著,我們就要使用面向接口編程的原則,讓接口構(gòu)成系統(tǒng)的骨架,以便達(dá)到更換實(shí)現(xiàn)接口的類就可以更換系統(tǒng)的實(shí)現(xiàn)的目的。

中心類負(fù)責(zé)對外提供打印功能,要求可以隨時更換打印機(jī)類型。代碼實(shí)現(xiàn)如下:

折疊

Java 代碼

package?Java.sg.ch03;

publicclassSchool3implementsIntroduceable{

privatePrinterFace?printer;//打印機(jī)

//??輸出中心的詳細(xì)信息

publicString?detail()?{

return"這里是中心";

}

//??使用中心打印機(jī)打印信息

publicvoidprint(Introduceable?intro){

printer.print(intro.detail());

}

//設(shè)置打印機(jī)

publicvoidsetPrinter(PrinterFace?p)?{

this.printer?=?p;

}

}

測試類提供main方法進(jìn)行單元測試。代碼實(shí)現(xiàn)如下:

折疊

Java 代碼

/*

*?jsp.sg.ch04.Test.java

*?2011-5-29

*?4u^j2JavaJavaL

*/

packageJava.sg.ch03;

publicclassTest?{

publicstaticvoidmain(String[]?args)?{

//創(chuàng)建中心實(shí)例

School3?school?=newSchool3();

//為該中心配備黑白打印機(jī)

school.setPrinter(newBlackPrinter());

school.print(school);

//為該中心配備彩色打印機(jī)

school.setPrinter(newColorPrinter());

school.print(school);

}

}

經(jīng)驗(yàn):面向接口編程可以實(shí)現(xiàn)接口和實(shí)現(xiàn)的分離,這樣做的最大好處就是能夠在客戶端未知的情況下修改實(shí)現(xiàn)代碼。那么什么時候應(yīng)該抽象出Java接口呢?一種是用在層和層之問的調(diào)用。層和層之間是最忌諱耦合度過高或是改變過于頻繁。設(shè)計(jì)優(yōu)秀的接口能夠解決這個問題。另一種是用在那些不穩(wěn)定的部分上。如果某些需求的變化性很大,那么定義接口也是一種解決之道。設(shè)計(jì)良好的接口就像是我們?nèi)粘J褂玫娜f用插座一樣,不論插頭如何變化,都可以使用。

最后強(qiáng)調(diào)一點(diǎn),良好的接口定義一定是來自于需求的,它絕對不是程序員絞盡腦汁想出來的。

總結(jié)

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

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