一个权限删除的功能:通过的是组合+访问者的模式
首先有个PriorityNode
{
基本权限逻辑
有个接受的访问者
public void accept(Visitor visitor){ visitor.visit(this); }
}
提供访问者接口
public interface Visitor { /** * 访问权限树节点 * @param node */ void visit(PriorityNode node); }
访问者的实现类
PriorityNodeRelateCheckVisitor 这个类是个检查的类,检查权限是否存在,如果存在或者不能删除就返回false visit方法 ,将节点的数据查询出来,然后克隆,调用访问者 下面就去校验权限,如果权限存在就返回fasle、 if(relateCheck(node)){} //这个方法就会校验的 relateCheck(Node){}
删除的访问者和上面的类似,把校验逻辑换成删除数据库