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