`
dearwolf
  • 浏览: 345225 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中的接口编程

阅读更多

原文源于开发高手200412期——深入剖析Java的动态特性和接口编程模型

 

读了这篇文章之后,我对接口概念的理解又深了一层,不仅仅停留在“优先使用接口,而非类继承”的层次上了。

 

接口,实际上就是服务的提供者,调用接口的一方,就是服务的调用者,凡是实现了同一个接口的对象,都可以向服务的调用者提供相同的服务。

 

文章中最开始介绍的方法就是new一个服务提供者,通过它来向调用者提供所需的资源,这种方法是最简单的,同时也是耦合性最强的,因为使用这种方式的前提条件,就是服务调用者必须知道服务提供者,当服务提供者可变而且必须在系统运行时才能确定的时候,这种方法也就不能用了。

 

于是,文章中又提出了interface+Class.forName()的模型,通过Class.forName(),我们动态的加载了服务实现,而通过使用interface,我们的服务调用者又可以预先获得这个服务提供者所提供的服务,即使在编译的时候我们并没有真正的获得服务提供者的资源,但是接口已经规定了所有的服务提供者所必须遵守的契约,这样服务调用者可以完全相信动态获得得这个服务提供者的资源是符合条件的资源。

 

紧接着,作者又通过分析JDBCAPI来进一步分析接口与动态加载的使用。

 

JDBC API在使用过程中不用考虑各个数据库实现的差异,而采用统一的方式进行编码,但是各个数据库厂商的核心引擎是不一样的,那么该如何采用一致的方式访问呢?结合上面的分析得到,这又是一个服务提供者可变而且在运行时才确定的例子。

 

最基本的方法就是采用Class.forname()方法来加载驱动对象,然后获得连接。稍稍优化一些的方式就是把驱动对象,url都写在配置文件中,更改驱动的时候,只需要更改配置文件就可以了。

 

这种方法就是服务的调用者对接口进行编程,然后通过动态加载的方式来获得具体的服务提供者。但是这种方法依然具有较高的耦合性,正确的方法应该是被动的接受服务提供者所提供的服务,而不是主动请求服务提供者对它提供服务,这样子才能够完全解耦,才可以避免服务调用者对服务提供者的依赖性。而上面的方法中,无论是修改程序,还是修改配置文件,都是要进行修改的,也就是非独立。

 

更好一点的方法就是J2EE里面的JNDI+工厂方法了,只要把外部服务器的连接配置成功,就可以用JNDI查找获得抽象的服务资源工厂,然后通过这个工厂生成所需要的服务,这样无论如何改动数据库驱动,程序的代码都无需更改。如:

InitialContext ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup(“xxx”);

= ds.getConnection();

 

这种方式仅仅依赖于外部环境了,按照作者的观点,采用依赖注入就可以让服务调用者完全是被动的获得服务提供者的服务,但是这些我还没有看到过,还有待于以后的学习。

分享到:
评论

相关推荐

    java中的面向接口编程

    面向接口编程是java编程中的一种重要思想,它强调在系统设计中,各个对象之间的协作关系的重要性。这种思想认为,在系统设计之初,各个对象内部的实现细节不那么重要,而各个对象之间的协作关系才是系统设计的关键。...

    java面向接口编程

    在Java编程语言中,"面向接口编程"是一种重要的设计原则,它强调了程序设计应以接口为中心,而非具体的实现类。这种编程范式有助于提高代码的可扩展性、可维护性和松耦合性。让我们通过生活中的实例和给定的类文件来...

    Java语言:什么叫面向接口编程

    而在面向接口编程中,这种方法被进一步抽象,将行为的定义抽离出来形成接口,而具体的实现则由其他类来完成。 这样的设计理念带来了很多好处: - **提高了代码的可读性和可维护性**:通过将定义与实现分开,代码变...

    针对接口编程 java示例

    在Java编程中,接口(Interface)是一种非常重要的概念,它为多态性提供了基础,促进了模块间的解耦,使得代码更加灵活和易于扩展。接口编程是面向对象设计的一个关键原则,尤其是在实现设计模式时,如鸭子模式。 ...

    java 接口练习作业

    在Java编程语言中,接口(Interface)是一种定义行为规范的关键概念。它允许我们定义一组抽象方法,供不同的类实现,从而...通过实践,你将更深入地理解Java的面向接口编程思想,这在大型项目和团队开发中尤为重要。

    Java语言SQL编程接口part1

    Java语言SQL编程接口

    Java面向接口编程之简单工厂模式示例

    Java面向接口编程之简单工厂模式示例 本文档主要介绍了Java面向接口编程之简单工厂模式的概念和实现,以及如何使用简单工厂模式来实现不同的打印机功能。下面是对标题、描述、标签和部分内容的分析和知识点总结: ...

    Java-Java函数式编程教程

    在Java 8及更高版本中,函数式编程得到了官方的大力支持,引入了Lambda表达式、Stream API和Optional类等新特性,使得Java开发者可以更高效、简洁地编写代码。 1. **Lambda表达式**: Lambda表达式是Java函数式...

    农行网上支付平台-商户接口编程指南-Java_Edition-V3.1.6.zip

    《农行网上支付平台-商户接口编程指南-Java_Edition-V3.1.6》是农业银行为开发者提供的一份详尽的参考资料,旨在帮助商户快速理解和接入其网上支付系统。这份指南专为Java开发人员设计,涵盖了从基础概念到实际操作...

    java实验 面向抽象与接口编程

    面向抽象与接口编程是Java编程中的核心概念,它体现了面向对象设计的原则,旨在提高代码的灵活性、可扩展性和可维护性。在这个实验中,我们将深入探讨这两个关键概念,并通过实践来理解它们在实际编程中的应用。 ...

    java中的面向接口编程.doc

    ### Java中的面向接口编程 #### 一、面向接口编程的概念 面向接口编程(Interface-Oriented Programming, IOP)是一种编程范式,强调程序设计应该围绕接口而非具体实现来进行。在Java中,接口是一个完全抽象的类,...

    农行网上支付平台-商户接口编程指南-Java_Edition-V3.1.7

    《农行网上支付平台-商户接口编程指南-Java Edition-V3.1.7》是一份由农业银行开发的针对开发者和商户的编程指南,用于指导如何通过Java语言接入并使用农行的网上支付平台进行交易处理。这份指南覆盖了接口的详细...

    C#调用Java接口演示

    本示例主要探讨的是如何使用C#调用Java接口,实现不同编程语言之间的交互。C#和Java都是广泛应用的编程语言,它们各自拥有丰富的库和生态系统,但有时需要在两者之间建立桥梁,以利用各自的优点。本文将详细介绍这一...

    java开发接口帮助文档

    Java开发接口帮助文档是开发者在进行Java编程时的重要参考资料,它包含了JDK中的类库、接口、类与类之间的继承关系以及接口与接口之间的继承结构等详细信息。这份文档通常以`.chm`(Microsoft Compiled HTML Help)...

    Java 并发编程实战.pdf

    作者可能还会分享如何测试和调试并发程序,这是并发编程中非常困难且容易被忽视的一部分。包括性能分析、死锁检测以及如何使用日志和监控工具来诊断并发程序中的问题。 此外,该书可能会对Java中一些新的并发API...

    《Java函数式编程》_高清华.zip

    例如,`java.util.function`包下提供了许多预定义的函数接口,如`Function,R>`、`Predicate<T>`、`Consumer<T>`等,这些接口在函数式编程中扮演着重要角色。 3. **Stream API**:Stream API是Java 8新增的用于处理...

    Java网络编程/Java网络编程实例

    9. **异常处理**:网络编程中常见的异常有IOException、SocketException等,良好的异常处理机制可以确保程序的健壮性。 10. **网络调试工具**:如telnet、curl和Wireshark等,可以帮助开发者测试和调试网络应用。 ...

    Java多线程编程实战指南-核心篇

    线程池是Java并发编程中不可或缺的一部分。Executor框架提供了ThreadPoolExecutor,它允许我们预先创建一定数量的线程,管理和控制线程的执行,有效避免了频繁创建和销毁线程的开销。通过调整线程池参数,可以优化...

    JAVA多线程编程技术PDF

    其次,线程同步是多线程编程中的关键部分,以防止数据竞争和不一致。Java提供了多种同步机制,如synchronized关键字、Lock接口(如ReentrantLock)以及volatile关键字。synchronized用于控制对共享资源的访问,确保...

Global site tag (gtag.js) - Google Analytics