java的可拓展性

來源:文萃谷 4.47K

下面我將以兩個例子來充分闡述java中多型的可拓展性,作為一名優秀的程式設計師,就必須瞭解程式的可拓展性,非常利於程式後續的開發。

java的可拓展性

  第一個例子:

用電腦的主機板來作為例子,就我們所熟悉的電腦的主機板,裡面是不是有很多模組,網絡卡,音效卡,想要用到這些功能,只能當主機板執行起來,再給網絡卡和音效卡供電就可以,但這用軟體語言怎麼來實現呢?是不是先要主機板跑起來,主機板再讓音效卡或者網絡卡跑起來,但這樣做,拓展性不高讓音效卡和網絡卡跑起來的操作是重複的,而且有很多模組也具備這樣的.功能,就單純讓主機板上的模組跑起來,這是其一,萬一,那一天,技術更新,新的模組出現了,是不是又要建立模組的物件,然後又跑起來,這顯然是不利於開發的,但是針對這一個問題,主機板的廠商和音效卡,網絡卡的廠商商量後,以後就用一個PCI介面來連線主機板和模組,徹底解決了更新不能用或者重複使用的問題,而這恰恰對應了我們的java中的多型,利用多型,我們能大大提高程式的可拓展性!

具體程式碼如下!

/*需求:電腦執行例項,電腦執行基於主機板。*/interface PCI{ public void open(); public void close();}class MainBoard{ public void run() { tln("mainboard run "); } public void usePCI(PCI p)//PCI p = new NetCard()//介面型引用指向自己的子類物件。 { if(p!=null) { (); e(); } }}class NetCard implements PCI{ public void open() { tln("netcard open"); } public void close() { tln("netcard close"); method(); } }class SoundCard implements PCI{ public void open() { tln("SoundCard open"); } public void close() { tln("SoundCard close"); }}/*class MainBoard{ public void run() { tln("mainboard run"); } public void useNetCard(NetCard c) { (); e(); }}class NetCard{ public void open() { tln("netcard open"); } public void close() { tln("netcard close"); }}*/class DuoTaiDemo5 { public static void main(String[] args) { MainBoard mb = new MainBoard(); (); CI(null); CI(new NetCard()); CI(new SoundCard()); }}

 第二個例子:

利用常用資料庫來解釋多型,就我們熟知的資料庫而言,目前有兩種資料庫的連線模式:JDBC和Hibernatelian連線,使用資料庫,都有兩個必不可少的操作,連線和關閉,這時候,使用介面,把這兩種操作封裝起來,需要使用那種連線模式直接更換類名就可以了!

具體程式碼如下!

/*需求:資料庫的操作。資料是:使用者資訊。1,連線資料庫。JDBC Hibernate2,操作資料庫。 c create r read u d 3,關閉資料庫連線。*/interface UserInfoDao{ public void add(User user); public void (User user);}class UserInfoByJDBC implements UserInofDao{ public void add(User user) { 1,JDBC連線資料庫。; 2,使用sql新增語句新增資料。; 3,關閉連線。 } public void (User user) { 1,JDBC連線資料庫。; 2,使用sql新增語句刪除資料。; 3,關閉連線。 }}class UserInfoByHibernate implements UserInfoDao{ public void add(User user) { 1,Hibernate連線資料庫。; 2,使用sql新增語句新增資料。; 3,關閉連線。 } public void (User user) { 1,Hibernate連線資料庫。; 2,使用sql新增語句刪除資料。; 3,關閉連線。 }}class DBOperate{ public static void main(String[] args) { //UserInfoByJDBC ui = new UserInfoByJDBC();// UserInfoByHibernate ui = new UserInfoByHibernate(); UserInfoDao ui = new UserInfoByHibernate(); (user); ui.(user); }}

總結:

1. 這兩個例子都使用了介面來抽象出一些重複的操作,為了讓不同的模組能直接快捷地使用這些操作,直接使用多型的向上轉型(看我之前的部落格),能後用父類引用去呼叫,反正之後無論是技術更新而有了新的模組或者更換已有模組,我們都可以使用父類的引用去直接呼叫它們共同的操作!

2. 不一定用介面,也可以使用抽象類,但是,使用介面,可拓展性更高,以後有更新,可以直接改動介面,不用去改動抽象類,其次,使用介面,能夠被多繼承!這也是方便的地方。

以上這篇java用兩個例子充分闡述多型的可拓展性介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援。

熱門標籤