java用两个例子充分阐述多态的可拓展性介绍

 更新时间:2016年06月14日 16:18:26   投稿:jingxian  
下面小编就为大家带来一篇java用两个例子充分阐述多态的可拓展性介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

下面我将以两个例子来充分阐述java中多态的可拓展性,作为一名优秀的程序员,就必须了解程序的可拓展性,非常利于程序后续的开发。

第一个例子:

利用电脑的主板来作为例子,就我们所熟悉的电脑的主板,里面是不是有很多模块,网卡,声卡,想要用到这些功能,只能当主板运行起来,再给网卡和声卡供电就可以,但这用软件语言怎么来实现呢?是不是先要主板跑起来,主板再让声卡或者网卡跑起来,但这样做,拓展性不高让声卡和网卡跑起来的操作是重复的,而且有很多模块也具备这样的功能,就单纯让主板上的模块跑起来,这是其一,万一,那一天,技术更新,新的模块出现了,是不是又要创建模块的对象,然后又跑起来,这显然是不利于开发的,但是针对这一个问题,主板的厂商和声卡,网卡的厂商商量后,以后就用一个PCI接口来连接主板和模块,彻底解决了更新不能用或者重复使用的问题,而这恰恰对应了我们的java中的多态,利用多态,我们能大大提高程序的可拓展性!

具体代码如下!

 /*
需求:
电脑运行实例,
电脑运行基于主板。
*/


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());
    
  }
}

第二个例子:

利用常用数据库来解释多态,就我们熟知的数据库而言,目前有两种数据库的连接模式:JDBC和Hibernatelian连接,使用数据库,都有两个必不可少的操作,连接和关闭,这时候,使用接口,把这两种操作封装起来,需要使用那种连接模式直接更换类名就可以了!

具体代码如下!

/*
需求:数据库的操作。
数据是:用户信息。
1,连接数据库。JDBC Hibernate
2,操作数据库。
  c create r read u update d delete
3,关闭数据库连接。
*/

interface UserInfoDao
{
  public void add(User user);

  public void delete(User user);
}

class UserInfoByJDBC implements UserInofDao
{

  public void add(User user)
  {
    1,JDBC连接数据库。;
    2,使用sql添加语句添加数据。;
    3,关闭连接。
  }
  public void delete(User user)
  {
    1,JDBC连接数据库。;
    2,使用sql添加语句删除数据。;
    3,关闭连接。
  }
}

class UserInfoByHibernate implements UserInfoDao
{
  public void add(User user)
  {
    1,Hibernate连接数据库。;
    2,使用sql添加语句添加数据。;
    3,关闭连接。
  }
  public void delete(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();
    ui.add(user);
    ui.delete(user);
  }
}

总结:

1. 这两个例子都使用了接口来抽象出一些重复的操作,为了让不同的模块能直接快捷地使用这些操作,直接使用多态的向上转型(看我之前的博客),能后用父类引用去调用,反正之后无论是技术更新而有了新的模块或者更换已有模块,我们都可以使用父类的引用去直接调用它们共同的操作!

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

以上这篇java用两个例子充分阐述多态的可拓展性介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java设计模式之代理模式与装饰模式实例详解

    Java设计模式之代理模式与装饰模式实例详解

    这篇文章主要介绍了Java设计模式之代理模式与装饰模式,结合具体实例形式分析了代理模式与装饰模式的概念、功能、java实现方法与相关使用注意事项,需要的朋友可以参考下
    2017-09-09
  • hibernate测试时遇到的几个异常及解决方法汇总

    hibernate测试时遇到的几个异常及解决方法汇总

    今天小编就为大家分享一篇关于hibernate测试时遇到的几个异常及解决方法汇总,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 浅析Java中的XML文件处理

    浅析Java中的XML文件处理

    ‌XML‌是一种用于存储和传输数据的标记语言,由W3C(万维网联盟)于1998年发布,本文主要来和大家聊聊Java中XML文件处理的相关知识,有需要的可以参考下
    2024-11-11
  • Spring Boot中@Import三种使用方式实例详解

    Spring Boot中@Import三种使用方式实例详解

    这篇文章主要介绍了Spring Boot中@Import三种使用方式,主要有引入普通类,引入importSelector的实现类及引入importBeanDefinitionRegister的实现类,结合实例代码给大家讲解的非常详细,需要的朋友可以参考下
    2022-11-11
  • Java 如何判断Integer类型的值是否相等

    Java 如何判断Integer类型的值是否相等

    这篇文章主要介绍了Java 如何判断Integer类型的值是否相等操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 关于SpringBoot简介、官网构建、快速启动的问题

    关于SpringBoot简介、官网构建、快速启动的问题

    SpringBoot 是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程,这篇文章主要介绍了SpringBoot简介、官网构建、快速启动,需要的朋友可以参考下
    2022-07-07
  • Java读取InfluxDB数据库的方法详解

    Java读取InfluxDB数据库的方法详解

    本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、tag等,感兴趣的小伙伴跟着小编一起来看看吧
    2025-01-01
  • Java实现生成Excel树形表头完整代码示例

    Java实现生成Excel树形表头完整代码示例

    这篇文章主要介绍了Java实现生成Excel树形表头完整代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Java之next()、nextLine()区别及问题解决

    Java之next()、nextLine()区别及问题解决

    这篇文章主要介绍了Java之next()、nextLine()区别及问题解决,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java源码分析:Guava之不可变集合ImmutableMap的源码分析

    Java源码分析:Guava之不可变集合ImmutableMap的源码分析

    今天给大家带来的是关于Java源码的相关知识,文章围绕着Java ImmutableMap展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下,希望能给你带来帮助
    2021-06-06

最新评论