java业务逻辑校验数据重复_java – 业务逻辑验证模式和建议

你可以使用

the strategy pattern.

每个条件都可以建模为一个函数,它接收一个帖子和一个会话,并可能返回一个错误:

Post -> PostContext -> Optional

您可以使用界面表示:

@FunctionalInterface

public interface ValidationCondition {

Optional validate(final Post post, final Session session);

}

例如:

public class CreatorValidation implements ValidationCondition {

public Optional validate(final Post post, final Session session) {

if (post.getCreator().equals(session.getUser()) {

return Optional.empty();

}

return Optional.of("You should be the owner of the post");

}

}

然后,您可以将每个验证存储在列表中:

final List conditions = new ArrayList<>();

conditions.add(new CreatorValidation());

conditions.add(new ScoreValidation());

// etc.

使用该列表,可以批量应用验证:

final List errors = new ArrayList<>();

for (final ValidationCondition condition : conditions) {

final Optional error = condition.validate(post, session);

if (error.isPresent()) {

errors.add(error.get());

}

}

使用Java 8 lambdas,您可以声明这些内联:

final ValidationCondition condition = (post, session) -> {

// Custom logic

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值