(十五)访问者模式

我理解,访问者模式就是用接口嫁接实体类,使得实体类有了一个窗口,可以被接口的实现类访问,进而对实体类做一些操作

public class Priority {
	private Long id;
	private String name;
	// get and set
	public <T> T execute(PriorityOperation<T> operate) {
		return operate.doExecute(this);
	}
}

可以明显看出,PriorityOperation就是一个接口,可以用多个访问者实现类实现它
每个实现类里都有doExecute方法,这里直接把实体类传给了这个方法,访问者就能对实体类进行操作了

在具体的service使用时,只需要得到这个实体类,然后就可以用访问者对其操作
比如我想对权限进行删除操作,这样使用,代码看起来就像我叙述的一样,完全符合面向对象的设计思想
获得权限实体类,拿到检测访问者,检测权限有没有关联,拿到删除访问者,删除权限

Priority priority = priorityService.getById(id);
//检测该权限有没有关联权限
RelatedCheckPriorityOperation relatedCheckOperation = context.getBean(RelatedCheckPriorityOperation.class);
Boolean relateCheckResult = priority.execute(relatedCheckOperation);	
if(relateCheckResult) {
	return false;
}
// 递归删除当前权限以及其下所有的子权限
RemovePriorityOperation removeOperation = context.getBean(RemovePriorityOperation.class);
priority.execute(removeOperation);
return true;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值