zoukankan      html  css  js  c++  java
  • 【java】接口的作用|实例讲解java接口

    接口作用:

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

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

    接口实例

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

    ok 

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

    总共三个包,分别是

    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 转载请说明,写文章的不多了。



  • 相关阅读:
    mysql自动增长怎么恢复从1开始
    Python 中的多维字典
    如何将JS里变量的值赋给文本框
    使用nagios+python监控nginx进程数
    python getopt使用
    Nagios安装完后status map,trends等页面访问出错之解决
    nagios监控3306端口
    AdventureWorks Databases 2008 下载地址
    multiselect获取选中的多个下拉项的值(逗号分割的字符串)
    用CSS让网页背景图片居中的方法
  • 原文地址:https://www.cnblogs.com/ae6623/p/4416661.html
Copyright © 2011-2022 走看看