前言
Jive 是一个开放的 Java 源代码项目。其目标是建设一个开放结构的,强壮的,易于扩展的基于 JSP
的论坛。在其设计目标的指导下,其结构设计得非常得好,融合了很多新的观念,比如 Design Pattern,
可更换的 Skin,可插入 Plug 等等。详细解读其源代码对于理解这些新的设计上的概念是很有裨益的。如
果你对 Design Pattern 和 Java 语言有一定的了解,但是还是会时常迷惑于其中的话,不妨研究研究 Jive
源代码,一定会对其中的很多概念有更深入的理解。这篇文章源于我的 Jive 源代码研究笔记,希望能够
提纲挈领,带领大家进入到这个美好的世界。当然,如果没有时间仔细地看源代码的话,看看这篇文章,
我想也是会有一些帮助的。
再开始之前,需要指出的是,Jive 中对 Design Pattern 的应用,并没有拘礼与 GOF 书中所给出的实
现方法,而是有许多变通的地方。一方面,我想是由于具体的实际需要,另一方面,我想这也是设计观念
进化的结果吧。因而,这些变通的地方,将是我讲解的重点。
整体结构概叙
基于一个 OO 的设计原则:面向接口编程,而不是针对实现编程。Jive 在设计的时候,把其大部分的
基本对象都设计为接口或者抽象类。在 Jive 中,基本的接口有
Forum,ForumMessage,ForumThread,Group,User,Authorization 和 Query。我们可以很容易的从
这些接口的名字来知道他们的功用,下面的类图给出了这些类之间的一些静态关系:
图 1:Jive 整体关系
你可能会有疑问,为什么会都是接口呢?这是基于扩展性考虑的。在 Jive 给出的实现中,所有的这
些接口,Forum,ForumMessage,User 等等,都使用数据库来实现的,一条消息,或者一个用户对应
于数据库中的一条消息 Jive 使用了 DbForum,DbForumMessage,DbUser 等类来实现这些接口,通过
JDBC 来操作数据库,使之作为论坛的底层支撑。