Untitled
unknown
java
5 years ago
1.6 kB
16
Indexable
[...]
public interface PasswordCharacterGenerator {
char generate();
}
[...]
public class PasswordGenerator {
public String generate(final int maxPasswordLength, PasswordCharacterGenerator... passwordCharacterGenerators) {
final List<PasswordCharacterGenerator> passwordCharacterGeneratorsList =
Objects.nonNull(passwordCharacterGenerators)
? Arrays.asList(passwordCharacterGenerators)
: new ArrayList<>();
[...]
// Tutaj generalnie logika generowania, 'generate' bedzie na obiekcie klasy PasswordCharacterGenerator dostarczał konkretny
// znak, który potem sobie dodasz.
[...]
}
}
// Przykładowa klasa implementująca:
[...]
public class SingleCharPasswordCharacterGenerator implements PasswordCharacterGenerator {
private final char charToReturn = charToReturn;
public SingleCharPasswordCharacterGenerator(final char charToReturn) {
this.charToReturn = charToReturn;
}
@Override
public char generate() {
return this.charToReturn;
}
}
[...]
// Wywołanie wyglądałoby tak:
{
final PasswordGenerator passwordGenerator = new PasswordGenerator();
final String password = passwordGenerator.generate(10, new SingleCharPasswordCharacterGenerator());
// oczywiście tych obiektów może być więcej i w metodzie generate po przecinku można je przekazać,
// ale równei dobrze jako tablicę po prostu. Co więcej zachowanie generowania jest zaprogramowane niezależnie od klasy PasswordGenerator.
}
Editor is loading...