快速业务通道

漫谈Java程序设计中的接口应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
的特性来进行一些描述,再根据需要进行不同的实现。请大家看看下面这个例子:

public interface User { int getAge(); String getName(); String getPassword(); } public class XMLUser implements User { // 这里用XML技术实现User接口中的方法 public int getAge() { ... } public String getName() { ... } public String getPassword() { ... } } public abstract class UserFactory { public static UserFactory getUserFactory() { return new XMLUserFactory(); } public User getUser(String name); public User getAdmin(); public User createUser(String name, String password, int age); public void addUser(User user); public void delUser(User user); } public class XMLUserFactory extends UserFactory { // 这里用XML技术实现的UserFactory的抽象方法 }

在这个例子中,我们定义了一个接口User和一个抽象类UserFactory。然后我们用XML技术实现这两个类。可以看出,我们只需要从用UserFactory的getUserFactory()就可以得到一个UserFactory的实例,而不用去考虑这个实例的具体实现方法。通过UserFactory的这个实例我们还可以直接得到User的实例,也不用去考具体的实现方法。

如果我们决定用JDBC技术来实现User和UserFactory,我们只需要按上面的形式实现JDBCUser和JDBCUserFactory就行了。然后把UserFactory中的getUserFactory方法修改一下就可以改变了它们的实现方法。而我们已经写好的调用UserFactory和User的部分不需要做任何修改。

这是用接口来定义数据结构的一个简单的例子,在实际应用中还有很多灵活的使用方法,大家需要在学习过程中不断的去体会。

四、理解分布式应用的原理

目前有很多软件项目都使用了分布式的技术。Java 有多种支持分布式应用的技术,早期用的比较多的有 RMI、CORBA 等技术,而现在 EJB 技术更为流行一些。但这些技术不管怎么发展,其实都是以接口为基础的。

以远程方法调用 RMI(Remote Method Invocation)为例。在编写 RMI 应用时,我们需要做两件最基本的事,首先要定义一个接口,这个接口要继承 java.rmi.Remote 接口,这个接口中应该包含你要从远端调用的方法名。接下来就是写一个类来实现这个接口中的方法。例如:

public interface Product extends java.rmi.Remote { String getName() throws java.rmi.RemoteException; } public class ProductImpl implements Product { String name; public ProductImpl(String n) { name = n; } public String getName() throws java.rmi.RemoteException { return name; } }

在这个例子中,接口 Product 是放在客户端的,而 ProductImpl 是放在服务器端的,客户在使用时只需要用指定的规则得到Product 的实例就行了,不用去考虑 Product 接口里的方法是如何实现的。在定义好这两个类后,用Java开发包命令“rmic ProductImpl”就可以帮助我们自动生成两个类 ProductImpl_Skel 和 ProductImpl_Stub。这两个类就包含了RMI调用的运作机制。有兴趣的朋友可以把这两个类反编译后研究一下。你会发现其中 ProductImpl_Stub 实际上是接口 Product 的一个实现类。RMI 机制就是用这个类来生成 Product 的实例供客户端使用。另一个类 ProductImpl_Skel 则是在服务端响应 ProductImpl_Stub 的调用请求的类。而 RMI 最底层的通讯原理则是利用 ObjectInputStream 和 ObjetOutputStream 通过 Socket 将要调用的方法名及参数列表传到服务器端,服务器端再通过特定的方法调用实现类(在本例中是 ProductImpl)的对应方法,然后将结果通过 Socket 传回客户端就行了。由于 Skel 和 Stub 类是用工具生成的,所以就大大节省了开发的时间。另外

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号