最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java用兩個例子充分闡述多態(tài)的可拓展性介紹

 更新時間:2016年06月14日 16:18:26   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava用兩個例子充分闡述多態(tài)的可拓展性介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

下面我將以兩個例子來充分闡述java中多態(tài)的可拓展性,作為一名優(yōu)秀的程序員,就必須了解程序的可拓展性,非常利于程序后續(xù)的開發(fā)。

第一個例子:

利用電腦的主板來作為例子,就我們所熟悉的電腦的主板,里面是不是有很多模塊,網(wǎng)卡,聲卡,想要用到這些功能,只能當(dāng)主板運行起來,再給網(wǎng)卡和聲卡供電就可以,但這用軟件語言怎么來實現(xiàn)呢?是不是先要主板跑起來,主板再讓聲卡或者網(wǎng)卡跑起來,但這樣做,拓展性不高讓聲卡和網(wǎng)卡跑起來的操作是重復(fù)的,而且有很多模塊也具備這樣的功能,就單純讓主板上的模塊跑起來,這是其一,萬一,那一天,技術(shù)更新,新的模塊出現(xiàn)了,是不是又要創(chuàng)建模塊的對象,然后又跑起來,這顯然是不利于開發(fā)的,但是針對這一個問題,主板的廠商和聲卡,網(wǎng)卡的廠商商量后,以后就用一個PCI接口來連接主板和模塊,徹底解決了更新不能用或者重復(fù)使用的問題,而這恰恰對應(yīng)了我們的java中的多態(tài),利用多態(tài),我們能大大提高程序的可拓展性!

具體代碼如下!

 /*
需求:
電腦運行實例,
電腦運行基于主板。
*/


interface PCI
{
  public void open();
  public void close();
}

class MainBoard
{
  public void run()
  {
    System.out.println("mainboard run ");
  }
  public void usePCI(PCI p)//PCI p = new NetCard()//接口型引用指向自己的子類對象。
  {
    if(p!=null)
    {
      p.open();
      p.close();
      
    }
  }
}


class NetCard implements PCI
{
  public void open()
  {
    System.out.println("netcard open");
  }
  public void close()
  {
    System.out.println("netcard close");
    method();
  }
  
}
class SoundCard implements PCI
{
  public void open()
  {
    System.out.println("SoundCard open");
  }
  public void close()
  {
    System.out.println("SoundCard close");
  }
}
/*
class MainBoard
{
  public void run()
  {
    System.out.println("mainboard run");
  }
  public void useNetCard(NetCard c)
  {
    c.open();
    c.close();
  }
}

class NetCard
{
  public void open()
  {
    System.out.println("netcard open");
  }
  public void close()
  {
    System.out.println("netcard close");
  }
}
*/

class DuoTaiDemo5 
{
  public static void main(String[] args) 
  {
    MainBoard mb = new MainBoard();
    mb.run();
    mb.usePCI(null);
    mb.usePCI(new NetCard());
    mb.usePCI(new SoundCard());
    
  }
}

第二個例子:

利用常用數(shù)據(jù)庫來解釋多態(tài),就我們熟知的數(shù)據(jù)庫而言,目前有兩種數(shù)據(jù)庫的連接模式:JDBC和Hibernatelian連接,使用數(shù)據(jù)庫,都有兩個必不可少的操作,連接和關(guān)閉,這時候,使用接口,把這兩種操作封裝起來,需要使用那種連接模式直接更換類名就可以了!

具體代碼如下!

/*
需求:數(shù)據(jù)庫的操作。
數(shù)據(jù)是:用戶信息。
1,連接數(shù)據(jù)庫。JDBC Hibernate
2,操作數(shù)據(jù)庫。
  c create r read u update d delete
3,關(guān)閉數(shù)據(jù)庫連接。
*/

interface UserInfoDao
{
  public void add(User user);

  public void delete(User user);
}

class UserInfoByJDBC implements UserInofDao
{

  public void add(User user)
  {
    1,JDBC連接數(shù)據(jù)庫。;
    2,使用sql添加語句添加數(shù)據(jù)。;
    3,關(guān)閉連接。
  }
  public void delete(User user)
  {
    1,JDBC連接數(shù)據(jù)庫。;
    2,使用sql添加語句刪除數(shù)據(jù)。;
    3,關(guān)閉連接。
  }
}

class UserInfoByHibernate implements UserInfoDao
{
  public void add(User user)
  {
    1,Hibernate連接數(shù)據(jù)庫。;
    2,使用sql添加語句添加數(shù)據(jù)。;
    3,關(guān)閉連接。
  }
  public void delete(User user)
  {
    1,Hibernate連接數(shù)據(jù)庫。;
    2,使用sql添加語句刪除數(shù)據(jù)。;
    3,關(guān)閉連接。
  }
}

class DBOperate
{
  public static void main(String[] args) 
  {
    //UserInfoByJDBC ui = new UserInfoByJDBC();
//    UserInfoByHibernate ui = new UserInfoByHibernate();
    UserInfoDao ui = new UserInfoByHibernate();
    ui.add(user);
    ui.delete(user);
  }
}

總結(jié):

1. 這兩個例子都使用了接口來抽象出一些重復(fù)的操作,為了讓不同的模塊能直接快捷地使用這些操作,直接使用多態(tài)的向上轉(zhuǎn)型(看我之前的博客),能后用父類引用去調(diào)用,反正之后無論是技術(shù)更新而有了新的模塊或者更換已有模塊,我們都可以使用父類的引用去直接調(diào)用它們共同的操作!

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

以上這篇java用兩個例子充分闡述多態(tài)的可拓展性介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java設(shè)計模式之代理模式與裝飾模式實例詳解

    Java設(shè)計模式之代理模式與裝飾模式實例詳解

    這篇文章主要介紹了Java設(shè)計模式之代理模式與裝飾模式,結(jié)合具體實例形式分析了代理模式與裝飾模式的概念、功能、java實現(xiàn)方法與相關(guān)使用注意事項,需要的朋友可以參考下
    2017-09-09
  • hibernate測試時遇到的幾個異常及解決方法匯總

    hibernate測試時遇到的幾個異常及解決方法匯總

    今天小編就為大家分享一篇關(guān)于hibernate測試時遇到的幾個異常及解決方法匯總,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 淺析Java中的XML文件處理

    淺析Java中的XML文件處理

    ?XML?是一種用于存儲和傳輸數(shù)據(jù)的標(biāo)記語言,由W3C(萬維網(wǎng)聯(lián)盟)于1998年發(fā)布,本文主要來和大家聊聊Java中XML文件處理的相關(guān)知識,有需要的可以參考下
    2024-11-11
  • Spring?Boot中@Import三種使用方式實例詳解

    Spring?Boot中@Import三種使用方式實例詳解

    這篇文章主要介紹了Spring?Boot中@Import三種使用方式,主要有引入普通類,引入importSelector的實現(xiàn)類及引入importBeanDefinitionRegister的實現(xiàn)類,結(jié)合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Java 如何判斷Integer類型的值是否相等

    Java 如何判斷Integer類型的值是否相等

    這篇文章主要介紹了Java 如何判斷Integer類型的值是否相等操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 關(guān)于SpringBoot簡介、官網(wǎng)構(gòu)建、快速啟動的問題

    關(guān)于SpringBoot簡介、官網(wǎng)構(gòu)建、快速啟動的問題

    SpringBoot 是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化Spring應(yīng)用的初始搭建以及開發(fā)過程,這篇文章主要介紹了SpringBoot簡介、官網(wǎng)構(gòu)建、快速啟動,需要的朋友可以參考下
    2022-07-07
  • Java讀取InfluxDB數(shù)據(jù)庫的方法詳解

    Java讀取InfluxDB數(shù)據(jù)庫的方法詳解

    本文介紹基于Java語言,讀取InfluxDB數(shù)據(jù)庫的方法,包括讀取InfluxDB的所有數(shù)據(jù)庫,以及指定數(shù)據(jù)庫中的measurement、field、tag等,感興趣的小伙伴跟著小編一起來看看吧
    2025-01-01
  • Java實現(xiàn)生成Excel樹形表頭完整代碼示例

    Java實現(xiàn)生成Excel樹形表頭完整代碼示例

    這篇文章主要介紹了Java實現(xiàn)生成Excel樹形表頭完整代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java之next()、nextLine()區(qū)別及問題解決

    Java之next()、nextLine()區(qū)別及問題解決

    這篇文章主要介紹了Java之next()、nextLine()區(qū)別及問題解決,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java源碼分析:Guava之不可變集合ImmutableMap的源碼分析

    Java源碼分析:Guava之不可變集合ImmutableMap的源碼分析

    今天給大家?guī)淼氖顷P(guān)于Java源碼的相關(guān)知識,文章圍繞著Java ImmutableMap展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下,希望能給你帶來幫助
    2021-06-06

最新評論

肥城市| 水富县| 延川县| 五指山市| 宜宾市| 阿合奇县| 青龙| 宁明县| 高邑县| 武夷山市| 中方县| 兴山县| 佛山市| 米林县| 宜君县| 资源县| 沙湾县| 曲周县| 阿克| 大田县| 益阳市| 湘乡市| 含山县| 商都县| 德兴市| 客服| 萨迦县| 雷波县| 大埔县| 鄂托克前旗| 灌阳县| 安达市| 日喀则市| 平顶山市| 太仆寺旗| 合水县| 内乡县| 五峰| 马山县| 会宁县| 永城市|