java - 该代码示例如何用 OO/设计模式术语定义?

标签 java oop design-patterns

假设我有一个 JDBC Connection 对象的 ListArray (connectionsArray)。但是,假设我需要为 ListArray 中的每个连接分配一个用户名。为此,我创建了一种包装对象,该对象在名为 UserConnection 的新对象中包含 Connection 对象和 String 对象。然后,我使用 UserConnection 对象而不是 Connection 对象填充connectionsArray。我的问题是 - 这里遵守了哪种类型的 OO 原则以及(如果适用)使用了哪种类型的设计模式?对我来说,这听起来有点像适配器模式,但我没有实现接口(interface),这似乎是适配器模式定义的一部分。

这是 UserConnection 的代码:

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;

public class UserConnection
{
    private Connection con;
    private String user;
    private static final String dbUser = "abc";
    private static final String db = "database1";
    private static final String password = "xxx";
    private static final String url = "jdbc:mysql://xxx.xxx.xxx.example.com/" + db;

    public UserConnection()
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } 
        catch(Exception e)
        {
            System.err.println(e);
        }

        try
        {
            con = DriverManager.getConnection(url, dbUser, password);   
        }
        catch(SQLException se) 
        {
            System.err.println(se);
        }
    }

    public Connection getUserConnection()
    {
        return con;
    }

    public String getUser()
    {
        return user;
    }

    public void setUser(String user)
    {
        this.user = user;
    }
}

最佳答案

这确实是实际的适配器模式,适配器是 JDBC Connection 对象,适配器是 UserConnection。适配器模式不讨论 Java 意义上的接口(interface)。这个想法是让客户端能够无缝地使用 JDBC Connection 对象和 UserConnection

您实际上已经使用了对象适配器模式,其中 UserConnection 组成 DBC 连接。还有另一种“类适配器模式”的情况,您可以扩展 JDBC Connection 对象,即 UserConnection 继承 JDBC Connection。

关于java - 该代码示例如何用 OO/设计模式术语定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20970332/

相关文章:

language-agnostic - Switch (Case) 总是出错吗?

数组上的java递归

java - 将 Ctrl+C 发送到进程

actionscript-3 - 全局类的正确的面向对象结构

java - 如何子类化 Java 构建器类?

design-patterns - 方法链和流畅接口(interface)之间的区别

java - 我已经在 gradle 编译 'com.firebaseui:firebase-ui-auth:2.3.0' 中编写了这一行,但仍然收到错误 "cannot resolve symbol ' Auth UI'”

java - 在 drools 中传递参数

javascript - JS OOP 从构造函数调用方法

php - Demeter 法则非常令人困惑,因为看起来我永远无法编写返回对象的方法