浏览 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)。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-05-25
标题党...
|
|
| 返回顶楼 | |
|
最后更新时间:2007-05-25
"我们都在面向接口编程, 我们的程序不依赖于哪个具体实现。 我们的程序架构就是面向服务的(SOA)。"
programming to interface != SOA |
|
| 返回顶楼 | |





