Jive源代码研究(4)

Iterator模式和论坛的浏览   Iterator模式用来分离数据结构和遍历算法,降低两者之间的耦合度,以使得同一个数据结构用不同的算法遍历时,仍能够具有相同的接口,另一方面,Iterator模式使得当改换遍历算法后,不需要更改程序的代码。   在Java的JDK中本身就定义有一个Iterator接口,在Iterator接口中仅仅定义了三个方法,hasNext()判断是否遍历完最后一个元素,next()方法返回要遍历的数据结构中一个对象,remove()则删除当前对象。Jive中使用IteratorProxy抽象类继承了这一接口。这儿Proxy的含义和上面一样,也就是说,这个Ite...
2006-11-18 18:49 | 阅读 871 次 | 评论 0 条

Jive源代码研究(3)

Decorator模式和过滤器   一般的在OO设计中,而外功能的添加是通过继承来实现的,但是继承有的时候不够灵活,而且当功能的组合很多的时候,继承的子类就会成几何级数增长,使得类多的难以控制。正是基于这样的考虑,Decorator模式得以诞生。   Decorator模式相当于封装了某个特定的操作,当某个对象需要这个操作的时候,加上这个Decorator即可。并且,多个Decorator还可以组合,以提供更多的功能。   在Jive中,Decorator模式应用在一些过滤器(Filter)中。Filter提供对ForumMessage对象内容的重新构造。比如,当一个ForumMes...
2006-11-18 18:48 | 阅读 894 次 | 评论 0 条

Jive源代码研究(2)

Proxy模式和权限控制  Proxy模式的功能有很多,比如远程代理,用来给远程对象提供一个本地代表;虚代理,用来为创建开大开销的对象提供缓冲,等等。在Jive中使用的是保护代理,为被保护的对象提供权限控制。  我们都知道在一个论坛中,权限的控制是必须的,否则论坛就很可能会被搞得一团糟。Jive中引入Proxy对象,Authorization接口以及权限描叙属类来提供对论坛的保护。  以ForumFactory为例,一个额外的ForumFactoryProxy来处理权限认证的工作,它为某一个ForumFactory提供了一个代理,保证只有授权的用户才能够存取ForumFactory的某些...
2006-11-18 18:35 | 阅读 1236 次 | 评论 0 条

Jive源代码研究(1)

AbstractFactory模式和可扩展性  如果要实现较好的可扩展性,AbstractFactory模式确实是一件利器。如上面所说,如果要创建的Forum接口的不同实现,而又不想更改代码的话,就需要用到抽象工厂了。再Jive中,AuthorizationFactory类是一个抽象类,用来创建Authorization对象。这是一个抽象工厂,可以通过不同的子类来创建不同的Authorization对象。这个工厂的实现方法是:  在AuthorizationFactory中使用一个private static变量factory,用来引用具体的抽象工厂的实例:  private stat...
2006-11-18 18:24 | 阅读 746 次 | 评论 0 条

Hibernate入门简介

Saturday, 18. March 2006, 02:01:51 Programming 下载文件你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。1、Hibernate包下载地址:http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc2、Ant包下载地址:http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip3、JDBC Driver要根据你用的database来定,一般databa...
2006-11-14 17:29 | 阅读 1197 次 | 评论 0 条

如何成功调试《Struts在行动》的第一例

struts in action第一例中的两个类 UserDirectory.class package app;import java.io.IOException;import java.io.InputStream;import java.io.FileOutputStream;import java.util.Enumeration;import java.util.Properties;import java.net.URL; public class UserDirectory { /** / private static fi...
2006-11-14 05:39 | 阅读 867 次 | 评论 0 条

初学者 学好JAVA最关键几点

作者:thinker 2004-05-18 转贴自www.csdn.net 第一个是path 和 CLASSPATH的问题 第二个是package和import问题 第三个是public,protected,private,static,什 么时候用,为什么要用,怎么用 第四个是制作jar文件 第一个,path 和 CLASSPATH的问题 什么是path 是你的JDK的工作路径 例如 你的jdk安装在C:/jdk/ 此时的你的path(如果原来没有PATH)设置为 PATH ;C:/jdk/ bin 什么是Classpath Classpath是Java中...
2006-11-12 05:59 | 阅读 950 次 | 评论 0 条

overloading(重载)overriding(覆盖)

一、方法 overriding(覆盖) 1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。 overloading(重载) 1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int,float),但是不能为fun(int,in...
2006-11-12 05:09 | 阅读 1031 次 | 评论 0 条

java 中 对象构造的执行顺序(学习笔记)

当对象被构造时,所有的字段被分配内存,包括从父类继承的字段,这些字段被设置默认值。然后执行以下三个阶段。 1、调用父类的构造器。 2、初始化所的字段。 3、执行构造体。 例:class X { protected int xMask = 0x00ff; protected int fullMask; public X() { fullMask = xMask; } public int mask(int orig) { return (orig & fullMask); ...
2006-11-11 22:48 | 阅读 805 次 | 评论 0 条

Java接口特性学习

在Java中看到接口,第一个想到的可能就是C++中的多重继承和Java中的另外一个关键字abstract。从另外一个角度实现多重继承是接口的功能之一,接口的存在可以使Java中的对象可以向上转型为多个基类型,并且和抽象类一样可以防止他人创建该类的对象,因为接口不允许创建对象。 interface关键字用来声明一个接口,它可以产生一个完全抽象的类,并且不提供任何具体实现。interface的特性整理如下: 1. 接口中的方法可以有参数列表和返回类型,但不能有任何方法体。 2. 接口中可以包含字段,但是会被隐式的声明为static和final。 3. 接口中的字段只是被存储在该接口的...
2006-11-11 20:28 | 阅读 923 次 | 评论 0 条

什么叫面向接口编程

[作者:umlchina 转贴自:www.umlchina.com ] 在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程我想就是指按照这种思想来编程吧!实际上,在日常工作中,你已经按照接口编程了,只不过如果你没有这方面的意识,那么你只是在被动的实现这一思想;表现在频繁的抱怨别人改的代码影响了你(接口没有设计到),表现在某个模块...
2006-11-11 20:27 | 阅读 831 次 | 评论 0 条

我对面向对象设计的理解——Java接口和Java抽象类

引用至:http://rella.blogchina.com/1954932.html 在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗? 为什么一定要有抽象类这个概念?为什么就不能把这个父类写成一个具体的类,子类再继承它不就可以了吗?何必弄一个抽象类出来,还要弄一些没有方法体的抽象方法,弄得又象接口又象类...
2006-11-11 20:12 | 阅读 1043 次 | 评论 0 条

[转]选择Java接口还是抽象类

  选择Java接口还是抽象类    作者:俞良松 本文选自:开放系统世界-赛迪网 2003年03月12日     很多人有过这样的疑问:为什么有的地方必须使用接口而不是抽象类,而在另一些地方,又必须使用抽象类而不是接口呢?或者说,在考虑Java类的一般化问题时,很多人会在接口和抽象类之间犹豫不决,甚至随便选择一种。   实际上接口和抽象类的选择不是随心所欲的。 要理解接口和抽象类的选择原则,有两个概念很重要:对象的行为和对象的实现。如果一个实体可以有多种实现方式,则在设计实体行为的描述方式时,应当达到这样一个目标:在使用实体的时候,无需详细了解实体行为的实现方式。也就是说,要把对象...
2006-11-11 19:54 | 阅读 813 次 | 评论 0 条

[转]有关接口和抽象类

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。一、理解抽象类ab...
2006-11-11 19:37 | 阅读 895 次 | 评论 0 条

[转]全面接触Java集合框架(五)

4. Map接口  Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。  (1) 添加、删除操作:  Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像。如果该关键字已经存在,那么与此关键字相关的新值将取代旧值。方法返回关键字的旧值,如果关键字原先并不存在,则返回null  Object remove(Object key): 从映像中删除与key相关的映射  void putAll(Map t): 将来自特定映像的所有元素添加给...
2006-11-02 15:06 | 阅读 780 次 | 评论 0 条

[转]全面接触Java集合框架(四)

3.Set接口  Set 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一个Collection,只不过其行为不同。  3.1. Hash表  Hash表是一种数据结构,用来查找对象。Hash表为每个对象计算出一个整数,称为Hash Code(哈希码)。Hash表是个链接式列表的阵列。每个列表称为一个buckets(哈希表元)。对象位置的计算 index = HashCode % buckets (HashCode为对象哈希码,buckets为哈希表...
2006-11-02 15:05 | 阅读 854 次 | 评论 0 条

[转]全面接触Java集合框架(三)

2.List接口  List 接口继承了 Collection 接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。  (1) 面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置 :  void add(int index, Object element): 在指定位置index上添加元素element  boolean addAll(int index, Collection c): 将集合c的所有元素添加...
2006-11-02 15:04 | 阅读 911 次 | 评论 0 条

[转]全面接触Java集合框架(二)

集合接口  1.Collection 接口  用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。  (1) 单元素添加、删除操作:   boolean add(Object o):将对象添加给集合   boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o  (2) 查询操作:   int size() :返回当前集合中元素的数量   boolean isEmpty() :判断集合中是否有任何元素   boolean contains(Object o) :查找集合中是否含有对象o   Iterator iterator...
2006-11-02 15:03 | 阅读 716 次 | 评论 0 条

[转]全面接触Java集合框架(一)

Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。 Java 2集合框架图  集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。   抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。   实现类:8个实现类(实线表示),对接口的具体实现。  在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上;因此,允许您更改基本的数据结构而不必改变其它代码。  · Collection 接口是一组允许重复的对象。  ·...
2006-11-02 15:01 | 阅读 911 次 | 评论 0 条

《Java 2核心技术》读书笔记──泛型程序设计(1)

作者:admin 日期:2006-09-14 最近有空翻阅了《Java 2核心技术》卷I,对于其中的第十三章──泛型程序设计的章节摘录了下面的内容做为读书笔记,以便日后方便查看。 从java程序设计语言1.0版本发布以来,变化最大的部分就是泛型。 泛型正是我们需要的程序设计手段。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后进行强制类型转换的代码具胡更好的安全性和可读性。 一.为什么使用泛型 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。 在JDK5.0以前,Java泛型是用继承来实现的。如ArrayList类:...
2006-11-02 05:15 | 阅读 1048 次 | 评论 0 条
浏览92269次