栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

业务逻辑验证模式和建议

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

业务逻辑验证模式和建议

您可以使用策略模式。

可以将每个条件建模为一个函数,该函数需要发布和会话,并可能返回错误:

Post -> PostContext -> Optional<String>

您可以用一个接口来表示:

@FunctionalInterfacepublic interface ValidationCondition {    Optional<String> validate(final Post post, final Session session);}

因此,例如:

public class CreatorValidation implements ValidationCondition {    public Optional<String> 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<ValidationCondition> conditions = new ArrayList<>();conditions.add(new CreatorValidation());conditions.add(new Scorevalidation());// etc.

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

final List<String> errors = new ArrayList<>();for (final ValidationCondition condition : conditions) {    final Optional<String> error = condition.validate(post, session);    if (error.isPresent()) {        errors.add(error.get());    }}

使用Java 8 lambda,可以内联声明以下代码:

final ValidationCondition condition = (post, session) -> {    // Custom logic});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号