
设计模式
zhuzhu_guang
这个作者很懒,什么都没留下…
展开
-
yazd项目心得(一)
yazd是Jive项目的前身,基本秉承了Jive的风格,虽然现在研究框架比较多,但是还是对原始的设计模式比较感兴趣,以下记录yazd的源码研究1. 使用抽象工厂模式yazd大量应该工厂模式,基本所有业务对象的创建都基于工厂模式,首先工厂本身也可以有多个实现类,如ForumFactory是个抽象类,默认的实现类是DbForumFactory,和传统设计模式相比,主要是具体实现类写在配置文...2012-02-16 21:35:17 · 230 阅读 · 0 评论 -
yazd项目心得(二)
4. 迭代器模式 迭代器隐藏了对迭代过程的细节,在yazd项目中,有对forum等对象的迭代。首先有一个IteratorProxy抽象类定义了基本的迭代器的数据结构,这个结构中包含了权限和一个基本的Iterator。ForumIteratorProxy继承IteratorProxy,他实现了next迭代方法,其实就是对基本的Iterator的一个过滤,将有读权限的forum保存下来。...2012-02-17 21:11:14 · 202 阅读 · 0 评论 -
yazd项目心得(三)
5. 缓存机制yazd项目使用了简单的自定义缓存机制主要涉及到的接口、对象有:(1)Cacheable是所有可以放入缓存中的对象的统一接口,只有一个方法getSize()用于返回占用内存空间的字节数(2)Cache是缓存对象,成员变量中,使用一个hashmap来存储缓存对象,2个链表,分别来存储缓存对象存入的顺序和存入的时间,最大可容纳的字节数,每次加入新的缓存对象的时...2012-02-19 01:57:44 · 173 阅读 · 0 评论 -
yazd项目心得(四)
6. Prototype模式 例子是yazd项目中过滤器的实现,其实又有点像装饰器模式。filter和过滤对象继承同一个接口,接收一个过滤对象,在方法中进行过滤处理,比如在FilterHtml继承ForumMessage,在构造函数内clone所有的过滤对象的属性,病在getBody方法中对Html内容进行特殊字符的转换等处理。...原创 2012-02-27 01:16:18 · 146 阅读 · 0 评论 -
yazd项目心得(五)
7. yazd项目重要对象 Forum,Forum接口代表一个论坛,默认继承对象是DbForum。重要的接口方法有createThread,创建一个话题;createMessage,创建一条消息;遍历所有的话题,threads;创建一个查询,createQuery;对一个用户增加对当前论坛的权限,addUserPermission;激活过滤器,applyFilters F...原创 2012-02-27 23:41:58 · 142 阅读 · 0 评论 -
yazd项目心得(六)
今天继续看了yazd项目,这个jive论坛的前身,和当前流行的用spring框架写service,用持久框架写Dao的方式非常不同。最大的不同点感觉是,yazd项目的对象责任更加集中,在这里设计者可以充分发挥自己的抽象能力。 比如User对象中不只包括了属性,还包括了所有的行为,用户的权限,动作等操作。如果在spring框架中,属性和行为是相分离的,属性在entity对象中,行...原创 2012-02-28 20:25:24 · 150 阅读 · 0 评论 -
yazd项目心得(七)
yazd的权限模式主要由Authorization和ForumPermissions来决定。 Authorization主要是代表一个授权,基本上如果用户登录了,那么就代表授权通过,所以Authorization主要就是由一个UserID来表示。 ForumPermissions代表了一组权限,它主要的精髓是一个数组,有boolean元素,true和false代表是否拥有某种权限,...原创 2012-03-12 23:16:01 · 152 阅读 · 0 评论