silentbalanceyh/vertx-zero

View on GitHub
vertx-gaia/vertx-ams/src/main/qas/io/macrocosm/specification/secure/HAccount.java

Summary

Maintainability
A
0 mins
Test Coverage
package io.macrocosm.specification.secure;

import io.horizon.specification.secure.HCredential;

import java.util.Set;

/**
 * 「子账号」
 * <hr/>
 * 包含了需要使用的所有账号信息,此账号用于真正登录系统后台,HAccount 直接支持树型结构。
 * <pre><code>
 *     1. 一个 {@link HAccount} 账号之下可以包含多个子账号
 *     2. 只有主账号会包含契约,子账号契约和租约都位于账号之下
 * </code></pre>
 * 账号和上层容器由上层容器来引用,如此设计会使 {@link HAccount} 形成账号单独的个体。
 * 由于是树型结构,所以子账号的自身结构分成两类
 * <pre><code>
 *     1. 强引用:父账号
 *     2. 弱引用:子账号集
 * </code></pre>
 *
 * @author lang : 2023-05-20
 */
public interface HAccount extends HCredential {
    /**
     * 返回当前账号的父账号信息,如果当前账号是主账号,则返回 null
     *
     * @return 父账号 {@link HAccount}
     */
    default HAccount parent() {
        return null;
    }

    /**
     * 返回当前账号的所有子账号信息,默认为空集合
     *
     * @return 子账号集合 {@link Set}
     */
    default Set<String> children() {
        return Set.of();
    }
}