(二十一)Java工具类Builder建造者模式详解

时间:2021-08-29 04:36:58

原文链接:https://blog.csdn.net/yaomingyang/article/details/79288556

1.建造者模式

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,
    它提供了一种创建对象的最佳方式。
    一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
    主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,
    这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.Builder接口设计为在构造器设计模式中指定一个类作为构建对象

    Builder接口设计为在构造器设计模式中指定一个类作为构建对象,也就是实现Builder接口的类被标记为构造对象,
    所有的构造过程及逻辑都是在构造对象的build方法中完成,最终build方法返回正在构建的对象或由生成器计算的结果的引用;
  • 1
  • 2
  • 3
package builder;

import org.apache.commons.lang3.builder.Builder;

import common.ObjectUtils;
import ggframework.bottom.store.mongodb.DBObject;
import utils.UserAuthUtil;
/** * * 获取用户的权限的构建者类 * * @version 1.0 * @since JDK1.7 * @author yaomy * @date 2018年2月8日 上午10:09:11 */
public class UserAuthBuilder implements Builder<Long[]>{

    //账号ID
    private String account_name;

    public UserAuthBuilder(String account_name) {
        this.account_name = account_name;
    }

    public String getAccount_name() {
        return account_name;
    }


    public void setAccount_name(String account_name) {
        this.account_name = account_name;
    }

    @Override
    public Long[] build() {
        //通过账户名获取用户信息
        DBObject userObj = UserAuthUtil.getUserObj(this.getAccount_name());
        if(ObjectUtils.isNull(userObj)) {
            return null;
        }
        //通过用户ID获取用户所拥有的角色
        Long[] roleIds = UserAuthUtil.getRoleIdsByAccountId(userObj.getLong("account_id"));
        //通过角色ID查询用户拥有的授权访问对象
        Long[] authIds = UserAuthUtil.getAuthByRoleIds(roleIds);

        return authIds;
    }

}