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用兩個例子充分闡述多態的可拓展性介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

熱門標籤