学习笔记:设计模式——树结构(合成模式 模板模式)

文章作者 100test 发表时间 2007:09:15 12:07:52
来源 100Test.Com百考试题网


这是一次合成模式 模板模式的尝试

这是一个树结构的设计。

该组件只注重设计一个可扩展的树结构,并不提供创建树和遍历树的方式。用户可以针对这个树结构自己写实现。
该组件使用了合成模式 模板模式来设计。树的结构是根据透明的合成模式来设计的,这样使得客户端可以把树叶和树枝对象当成同一类对象处理。而树叶、树枝的抽象和具体实现之间的关系是通过模板模式来设计的,这样使得客户端可以很简单地将结点的具体对象置换掉。

结构说明:
TreeComponent:树结点的高度抽象,定义树结构的一些方法,所有树叶结点和树枝结点都上转成TreeComponent
TreeComposite:抽象树枝结点。
TreeLeaf:抽象树叶结点。

PermissionComposite:具体树枝结点。
PermissionLeaf:具体树叶结点。

PermissionBean:结点的具体内容,也就是结点对象所包含的成员变量。就是一个简单的JavaBean

注意:如果要为这个树结构设计一个遍历的方式,也许可以用迭代子模式为TreeComponent设计一个外禀子的迭代器。(有空再考虑^_^)


树结点的高度抽象,定义树结构的一些方法,所有树叶结点和树枝结点都上转成TreeComponent
public interface TreeComponent {

/**
* 添加子结点方法
* @param component
* @return
*/
boolean add(TreeComponent component).

/**
* 删除子结点方法
* @param component
* @return
*/
boolean remove(TreeComponent component).

/**
* 返回子结点方法
* @return
*/
List components().

/**
* 统计该结点(包括该结点)下,所有结点的数量
* @return
*/
int count().

/**
* 判断当前结点是否是树叶结点
* @return
*/
boolean isLeaf().

/**
* 返回该结点
* @return
*/
TreeComponent getComponent().

/**
* 返回当前结点名
* @return
*/
String getName().

/**
* 统计该结点(包括该结点)下,所有树叶结点的数量
* @return
*/
int leafCount().
}


相关文章


MVC用户认证web应用部分一
《Java与模式》学习笔记:设计模式——迭代子(Iterator)模式
《Java与模式》学习笔记:设计模式——合成(Composite)模式
《Java与模式》学习笔记:设计模式——模板(Template)模式
学习笔记:设计模式——树结构(合成模式 模板模式)
《Java与模式》学习笔记:设计模式——抽象工厂模式
专家:如何理解JavaFX应运而生
使用J2MEMMAPI开发移动多媒体应用技术
Workshop10.1的简单介绍和环境配置详解
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛