【java】接口的作用|实例讲解java接口-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

【java】接口的作用|实例讲解java接口

简介: 接口作用: 解决java不能多继承,用过接口变相实现多继承。 屏蔽实现的不同的差异 接口实例 现在假如说,java想让oracle和mysql实现自己的数据源和关闭数据源,java只需要做一个接口interface出来。

接口作用:

  1. 解决java不能多继承,用过接口变相实现多继承。

  2. 屏蔽实现的不同的差异

接口实例

现在假如说,java想让oracle和mysql实现自己的数据源和关闭数据源,java只需要做一个接口interface出来。而oracle和mysql自己去实现这个接口即可。

ok 

下面先上一个组织结构,需要用到工厂模式。

img_9120553164dcf0a2bee505495b4055cb.jpg

总共三个包,分别是

  1. 接口包 com.rs.biz

  2. 工厂包com.rs.factory

  3. 实现类com.rs.impl

最后一个是测试类。


第二步,开始写接口DateBase.java。

package com.rs.biz;


import java.sql.Connection;


public interface DateBase {

      //定义两个方法

      Connection getConnection(String url,String user,String password);

      void closed();

}


第三步,写实现类

Mysql.java

--------------------------------------------------------------

package com.rs.impl;


import java.sql.Connection;


import com.rs.biz.DateBase;


public class Mysql implements DateBase {


@Override

public Connection getConnection(String url, String user, String password) {

    System.out.println("我是mysql厂商实现的返回connection");

    return null;

}


@Override

public void closed() {

System.out.println("Mysql数据库connection关闭");

}


}

--------------------------------------------------------------

Oracle.java

--------------------------------------------------------------

package com.rs.impl;


import java.sql.Connection;


import com.rs.biz.DateBase;


public class Oracle implements DateBase {


    @Override

    public Connection getConnection(String url, String user, String password) {

        System.out.println("我是Oracle厂商实现的返回connection");

        return null;

    }


    @Override

    public void closed() {

        System.out.println("Oracle数据库connection关闭");

    }

}


ok,基本功已经做完了,现在开始思考接口的作用,既然接口是为了屏蔽不同类的差异性的,那么我们需要一个工厂类,用来返回你想要的结果,是oracle还是mysql的,此时我们开始编写工厂类。

--------------------------------------------------------------

DbFactory.java

--------------------------------------------------------------

package com.rs.factory;


import com.rs.biz.DateBase;

import com.rs.impl.Mysql;

import com.rs.impl.Oracle;


public class DbFactory {

    public static DateBase getConnection(DateBase db){

        return db;//通过传入的db类型,返回不同的类。这些类都是实现了接口DateBase的类

    }

}


--------------------------------------------------------------

好了,下面我们开始写测试类TestDateBase.java

--------------------------------------------------------------

packagetest.com.rs;

 

importcom.rs.biz.DateBase;

importcom.rs.factory.DbFactory;

importcom.rs.impl.Mysql;

importcom.rs.impl.Oracle;

 

public classTestDateBase {

    public static voidmain(String[] args) {

       String url = "";

       String user = "";

       String password = "";

       

       DateBase db = newDbFactory().getConnection(newOracle());

       db.getConnection(url, user, password);

       db.closed();

       

       DateBase db2 = newDbFactory().getConnection(newMysql());

       db2.getConnection(url, user, password);

       db2.closed();

    }

}


--------------------------------------------------

打印输出

我是Oracle厂商实现的返回connection

Oracle数据库connection关闭

我是mysql厂商实现的返回connection

Mysql数据库connection关闭

--------------------------------------------------------------------

讲解结束,理解这段代码后,你可以更改一下你的工厂类,将获得连接那个方法更改为用户不可见,自己设计好,或者从一个配置文件读出。




如有不懂的 可以联系小弟,我们一起进步,QQ 394263788 转载请说明,写文章的不多了。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: