论坛首页 入门讨论版 SOA

再看Javax

浏览 577 次
锁定老贴子 主题:再看Javax
该帖已经被评为新手帖
作者 正文
最后更新时间:2007-05-25
Javax 即JavaExtension 是在Java2时才引入的。基本上很多以javax开头的包里面的类都不是具体实现类。大多是接口或者抽象类。

举个例子 如果你不用DOM4J 或者JDOM之类的话, 你持有的对象Document是一个接口。
所以你肯定不能这么写

    Document doc = new Document();

你只能这样
 
   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   DocumentBuilder db = dbf.newDocumentBuilder();
   Document doc = db.parse();

要三步。
你是不是觉得sun 很傻, 对比微软阵营中使用
Set xDoc = New MSXML.DOMDocument
或者
xDoc = Server.CreateObject( "Microsoft.XMLDOM" )等方法,这样来真是太复杂了,太过度了

万事都是有原因的,以后大家就逐渐明白了。

回到DocumentBuilderFactory , 我们发现它是抽象类,虽然newInstance() 是个实体方法,
再去看这个方法, 我们就知道了
在编译期, 我们根本不知道会拿到一个怎样的DocumentBuilderFactory 实现, DocumentBuilder 实现,Document 实现:这些统统都是接口,告诉我们这些对象有哪些操作。
到了运行期,取决于运行环境, newInstance() 方法里面会定位到它们的具体的实现类。

注意,具体的实现类是JVM知道的, 严格上来说,你仍旧无法把接口cast成一个具体实现类, 按道理你也根本不应该这么做。

当我们引用Javax包里的类时,都是这么一个过程, 我们都在面向接口编程, 我们的程序不依赖于哪个具体实现。 我们的程序架构就是面向服务的(SOA)。
   
最后更新时间:2007-05-25
标题党...
   
0 请登录后投票
最后更新时间:2007-05-25
"我们都在面向接口编程, 我们的程序不依赖于哪个具体实现。 我们的程序架构就是面向服务的(SOA)。"

programming to interface != SOA
   
0 请登录后投票
论坛首页 入门讨论版 SOA

跳转论坛:
JavaEye推荐