当前位置: 首页 > 面试题库 >

DAO工厂模式是什么?

巩光誉
2023-03-14
问题内容

我知道工厂和抽象工厂方法,但是我想用Java创建一个DAO工厂模式

  1. 我想知道它的重要性。
  2. 它的用法

我已经检查了此链接,但是我很难理解。

任何人都可以借助示例进行解释吗?

编辑: 这是我理解的DAO模式的示例:

public interface UserDAO {
    public void insert(User user);
    public void update(User user);
    public void delete(int userId);
}

实现方式:

public class UserDAOImpl implements UserDAO {
    @Override
    public void delete(int userId) {
        // delete user from user table
    }

    @Override
    public User[] findAll() {
        // get a list of all users from user table
        return null;
    }

    @Override
    public User findByKey(int userId) {
        // get a user information if we supply unique userid
        return null;
    }

    @Override
    public void insert(User user) {
        // insert user into user table
    }

    @Override
    public void update(User user) {
        // update user information in user table
    }
}

厂:

public class UserDAOFactory {
    public static UserDAO getUserDAO(String type) { 
        if (type.equalsIgnoreCase("jdbc")) {
            return new UserDAOImpl();
        } else {
            return new UserDAOImpl();
        }
    }
}

客户端代码:

User user=new User();
user.setName("Jinoy P George");
user.setDesignation("Programmer");
user.setAge(35);
//get a reference to UserDAO object
UserDAO userDAO=UserDAOFactory.getUserDAO("jdbc");
//call insert method by passing user object
userDAO.insert(user);

这道模式正确吗?

我应该在哪里打开并关闭连接?


问题答案:

您可能不了解代码是如何工作的?好像很好

仅供参考:

  • 如果您考虑将其命名为UserDAOMySQLImpl,将另一个命名为UserDAOMSSQLImpl,以此类推,则可以更好地理解UserDAOImpl的定义,依此类推,您可能需要对每个数据库进行访问。

  • 在每个连接中,您都应该处理连接,并为特定的数据库服务器配置添加诸如私有功能之类的其他功能,它可能需要并且不需要在接口(UserDAO)中进行声明,但至少必须始终实现实现中定义的所有方法。接口,然后在Factory(UserDAOFactory)条件下,您可能会遇到以下情况:

`

public class UserDAOFactory{

    public static UserDAO getUserDAO(String type){ 
        if (type.equalsIgnoreCase("mysql")){
            return new UserDAOMySQLImpl();
        }else{
            return new UserDAOMSSQLImpl();
        }
    }
}

清楚一点吗?

然后,在客户端而不是像这样的硬编码行:

UserDAO userDAO=UserDAOFactory.getUserDAO("jdbc");

您可以拥有一个属性文件,以便能够在DAO之间动态切换,只需从属性文件中检索到该字符串即可:

UserDAO userDAO=UserDAOFactory.getUserDAO(myStringFromPropertiesFile);

根据属性文件中的定义,myStringFromPropertiesFile将包含“ mysql”或“ mssql”。

希望这可以帮助!



 类似资料:
  • 抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。

  • 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

  • 本文向大家介绍谈一下,什么是DAO模式?相关面试题,主要包含被问及谈一下,什么是DAO模式?时的应答技巧和注意事项,需要的朋友参考一下 考察点:对象   DAO(Data Access Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露底层持久化方案实现细节的前提下提供了各种数据访问操作。在实际的开发中,应该将所有对数据源的访问操作进行抽象化后封装在一个公共API中

  • 问题内容: 用最简单的术语来说,这使我感到困惑。假装您几乎在向母亲或某人解释。 问题答案: 工厂创建一个对象。所以,如果你想建立 每次创建对象时,您都不必依赖执行以下代码 那就是工厂的所在地。我们定义了一个工厂来为我们照顾: 现在我们要做的就是 真正的优势在于您想更改班级。可以说我们想传入另一个ClassC: 或新的ClassB: 现在,我们可以使用继承来轻松修改类的创建方式,以放置不同的类集。

  • 主要内容:介绍,实现,Shape.java,Rectangle.java,Square.java,Circle.java,ShapeFactory.java,FactoryPatternDemo.java工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 介绍 意图:定义一个创建对象的接口,让其子

  • 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 介绍 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决:主要解决接口选择的问题。