Untitled
unknown
java
4 years ago
1.6 kB
12
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...