原文链接: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;
}
}