java - 带有布尔参数的 Passy 密码生成器
问题描述
想知道解决这个问题的最佳方法。输入:将使用 passayPassGenerator 并设置布尔值。
问题:想根据包装函数调用中设置的布尔值返回密码字符串
使用 if else/switch 的问题是要处理的组合的绝对数量
private String passayPassGenerator(int len, boolean uppr, boolean lowr, boolean num, boolean spec) {
CharacterRule upperCase = new CharacterRule(EnglishCharacterData.UpperCase);
CharacterRule numbers = new CharacterRule(EnglishCharacterData.Digit);
CharacterRule lowerCase = new CharacterRule(EnglishCharacterData.LowerCase);
CharacterRule special = new CharacterRule(EnglishCharacterData.Special);
PasswordGenerator passwordGenerator = new PasswordGenerator();
return passwordGenerator.generatePassword(len, upperCase, lowerCase, special, numbers);
}
解决方案
请注意,您可以将规则列表传递给generatePassword
函数。因此,在这种情况下,您将首先使用规则构建一个列表,然后将其传递给函数。
像这样的东西:
private String passayPassGenerator(int len, boolean uppr, boolean lowr, boolean num, boolean spec) {
CharacterRule upperCase = new CharacterRule(EnglishCharacterData.UpperCase);
CharacterRule numbers = new CharacterRule(EnglishCharacterData.Digit);
CharacterRule lowerCase = new CharacterRule(EnglishCharacterData.LowerCase);
CharacterRule special = new CharacterRule(EnglishCharacterData.Special);
List<CharacterRule> rules = new ArrayList<>();
if (uppr) {
rules.add(upperCase);
}
if (lowr) {
rules.add(lowerCase);
}
if (num) {
rules.add(numbers);
}
if (spec) {
rules.add(special);
}
PasswordGenerator passwordGenerator = new PasswordGenerator();
return passwordGenerator.generatePassword(len, rules);
}
推荐阅读
- react-native - React-native 更新侧边菜单的内容
- python - 根据输入对大型列表进行切片
- c# - C# MVC 5 中的用户权限/类型逻辑
- html - 用于此输出的 html 标记
- makefile - Makefile:避免重新编译克隆的存储库
- glsl - 帧缓冲区和纹理非二的幂
- mongodb - 努力将 MongoDB singleResult 对象转换为 Go 结构
- amazon-web-services - `调用 ListBuckets 操作时发生错误 (InvalidToken):提供的令牌格式错误或无效。` w/`aws s3 ls`
- authentication - aspnet core 2.2 外部认证
- reactjs - React JS 中的“ScrollView”之类的组件?