今天上午面试中,考官问我一个关于JDBC的设计模式的问题,但是回答是利用Bridge模式、Service Locator。后来,我想了仔细想了一下,其实还有一些。
为什么是Bridge呢?
因为JDBC驱动中,有一个jdbc-odbc,这个利用桥接模式。从Drvier到Connection中的DriverManager,Connection到ResultSet的Statement,这两个对象不是起了Bridge对象的作用吗?同时JDBC的接口和驱动类实现也是分离的。
为什么是Service Locator呢?
在JDBC驱动加载是,需要URL参数,这个东西和JDNI类似,通过“命名空间”。我当时没有记错,经过核实,它确实通过Provider来提供具体的实现。JDBC,XML,NIO等技术,JDK采用的SPI的机制。
上述说法难免牵强,因此删除。
还有那些?
抽象工厂:如果把Connection,Statement作为工厂类的话,那么自然他们是抽象工厂,Connection可以产生抽象的工厂Statement或者PreparedStatement。
单例模式:通过ClassLoader加载java.sql.Drvier的实现类,JDBC系统会保存一个单例。
组合模式:JDBC驱动中,底层的Connection实现,需要知道Driver的元信息,自然,Statement也需要Connection。至少,MySQL是这么实现的。
但是我考虑没有把adapter作为答案,因为我觉得JDBC驱动实现是一种接口编程,没有过多的类型适配,也不存在接口兼容。至少,我在MySQL实现中,没有注意到。
作者知识有限,欢迎大家一起讨论和指正,谢谢。
分享到:
相关推荐
7. **设计模式**:为保证代码的可扩展性和模块化,设计模式如工厂模式、单例模式、观察者模式可能会被应用。例如,使用工厂模式创建数据库连接,单例模式确保数据库连接池只有一个实例,观察者模式用于事件监听和...
接下来,我们讨论MVC设计模式,这是一种在软件工程中广泛使用的架构模式,特别是在Web应用程序中。在Java世界中,Spring MVC是最受欢迎的实现之一。MVC模式将应用程序分为三个主要组件:模型(Model)负责业务逻辑和...
2. **MVC架构**:系统采用Model-View-Controller(模型-视图-控制器)设计模式,分离业务逻辑、数据模型和用户界面,提高了代码的可维护性和可扩展性。 3. **Servlet与JSP**:Servlet负责处理用户请求,执行业务...
9. **设计模式**:书中可能通过Spring框架中的实际应用,解析和讨论各种设计模式,如工厂模式、单例模式、代理模式等,以加深读者对设计原则和最佳实践的理解。 10. **测试支持**:Spring提供丰富的测试框架,包括...
10. **社区协作与交流**:描述中提到“欢迎大家交流”,这意味着项目鼓励社区参与,学习者可以通过讨论和分享经验,提升自己的沟通和团队协作能力。 通过参与这样的项目,学习者不仅可以深化Java编程技能,还能了解...
1. **设计模式**:jive项目中运用了大量的设计模式,如工厂模式、单例模式、观察者模式、装饰器模式等。设计模式是软件工程中的最佳实践,理解和应用这些模式能帮助你编写出更高效、可维护的代码。 2. **Web应用...
面试是评估一个开发者技能的关键环节,对于大公司的Java面试,通常会涵盖广泛的知识点,包括基础语法、面向对象编程、集合框架、多线程、异常处理、IO流、网络编程、设计模式、JVM内存管理、数据库操作、算法与数据...
SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,它将Web层进行职责解耦,分离了控制器、模型对象、分派器以及处理程序等。MyBatis是一个支持定制化SQL、存储过程以及高级映射的持久层...
[目录]EJB 的设计模式 6. [目录]Servlet Container 和 应用服务器 3. [目录]TOMCAT 9. [目录]纪念光盘精华区精选目录 1. [目录]Java编程 1. [目录]Java简单问题 2. [目录]为什么...
在J2EE框架下,通常会使用MVC(Model-View-Controller)设计模式,将业务逻辑、视图展示和数据处理分离,提高代码的可维护性和可扩展性。 此外,项目中提到,开发者需要在原有的Java基础上学习如何在Linux环境中...
单例模式是一种常用的软件设计模式,确保一个类只有一个实例,并提供一个全局访问点。在Java中,我们可以使用枚举来实现单例模式,这是一种安全且线程友好的方式。枚举单例模式避免了传统实现中可能出现的多线程问题...
3. MVC设计模式:讨论如何在JSP中应用MVC(Model-View-Controller)设计模式,以实现良好的应用程序结构。 4. JSTL(JSP Standard Tag Library):介绍JSTL库,包括核心标签、JDBC标签、XML标签等,以及如何将它们...
同时,MVC(Model-View-Controller)设计模式可能会被应用,以分离业务逻辑、数据模型和用户界面。此外,JSTL(JavaServer Pages Standard Tag Library)和EL可能用于简化JSP页面的编写,提高代码可读性。 总的来说...
7. **设计模式**:常见的设计模式如单例、工厂、观察者、装饰器、适配器、代理等,是衡量开发者解决问题能力的重要标准。理解并能灵活运用设计模式是提升代码质量和可维护性的关键。 8. **JVM内存模型**:了解Java...
在构建管理系统时,你可能还会接触到DAO(Data Access Object)模式,这是一种设计模式,用于在业务逻辑和数据库访问之间提供一个抽象层。这有助于保持代码的整洁,提高可维护性,并使你的应用能在不修改业务逻辑的...
学习这一章,读者可以理解如何使用JSF创建可复用的UI组件,并实现MVC(Model-View-Controller)设计模式。 第44章“Java 2D”介绍了Java中的二维图形处理系统,包括如何绘制线条、形状、文本以及图像,以及复杂的...
4. **DAO(Data Access Object)模式**:DAO模式是一种设计模式,用于封装对数据库的操作,提供了一层抽象,使得业务逻辑与数据访问逻辑分离,提高代码复用性。 5. **实体类(Entity Classes)**:为表对应的Java类...
2. **MVC设计模式**:通常在Web应用开发中,Model-View-Controller(MVC)模式被广泛应用。模型负责数据处理和业务逻辑,视图负责展示数据,控制器协调模型和视图的交互。学生选课系统可能采用这种架构,以提高代码...