Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java设计和接口(OOP类),以便使用直接数据库访问或web服务?_Java_Oop_Data Binding_Interface - Fatal编程技术网

如何用Java设计和接口(OOP类),以便使用直接数据库访问或web服务?

如何用Java设计和接口(OOP类),以便使用直接数据库访问或web服务?,java,oop,data-binding,interface,Java,Oop,Data Binding,Interface,目前,我必须查询我没有的数据库,它有一个web服务,所以它们提供的就是我得到的。由于这是内部的(某种程度上),我将来可能能够直接访问,以便在查询中获得更好的数据 我不想把每件事都写一遍又一遍。如果我在Java中这样做,我会写一个接口(编程类,想想实现接口,OOP)吗?我该怎么做?或者我只是编写一个全新的类并“插入它” 这只是一个常规的客户机/服务器体系结构。Http请求,服务器调用servlet或jsp,返回数据 我不确定我的想法是否是正确的设计。听起来你应该在这里使用一个具有不同实现的接口。比

目前,我必须查询我没有的数据库,它有一个web服务,所以它们提供的就是我得到的。由于这是内部的(某种程度上),我将来可能能够直接访问,以便在查询中获得更好的数据

我不想把每件事都写一遍又一遍。如果我在Java中这样做,我会写一个接口(编程类,想想实现接口,OOP)吗?我该怎么做?或者我只是编写一个全新的类并“插入它”

这只是一个常规的客户机/服务器体系结构。Http请求,服务器调用servlet或jsp,返回数据


我不确定我的想法是否是正确的设计。

听起来你应该在这里使用一个具有不同实现的接口。比如:

public interface DataAccess {
    Data getData();
}
然后,您可以针对该API编写代码,并根据需要插入/注入不同的实现。所以你可以有这个:

public class DirectDataAccess implements DataAccess {
    public Data getData() {
        //use JDBC, ORM, or similar
    }
}
或者这个:

public class WebServiceDataAccess implements DataAccess {
    public Data getData() {
        //call web service
    }
}

但是,只要您的客户端代码只引用了
DataAccess
接口,那么您就成功地将客户端与服务分离。

那么我只需要调整接口中的查询?接口应该只定义客户端所需的必要参数(参数类型)和返回类型(这在您的impl中很常见)。实际查询(例如SQL或HTTP请求)应该在每个特定的impl中定义,而不是在接口中定义。要添加superEb所说的内容,您需要按照getResultSet函数的工作方式对其进行编码。它是jdbc包中ResultSet接口中的一个方法。