Omówienie aplikacji domowej – część I

Witamy się w kolejnym tygodniu kursu – już piątym. Klasycznie już zaczniemy od omówienia zadania w ramach tworzenia aplikacji. Omówmy jak najszybciej moje podejście do rozwiązania, aby móc przejść do kolejnych materiałów.

Wyjątki

Pierwszym twoim zadaniem było stworzenie trzech wyjątków, które mają posiadać konstruktor parametrowy i bezparametrowy. Nic trudnego, jedynymy zagadnieniem, które mogłeś pominać to fakt, że wyjątki muszą być checked.

Szybkie przypomnienie z lekcji o wyjątkach i wiemy, że wyjątki checked dziedziczą po klasie Exception.

W takim razie jeden z trzech wyjątków wygląda tak:

package exception;

public class UserLoginAlreadyExistException extends Exception {
    public UserLoginAlreadyExistException() {
    }

    public UserLoginAlreadyExistException(String message) {
        super(message);
    }
}

Oczywiście kolejne dwa wyglądają podobnie. Pamiętaj, aby wszystkie umieścić w paczce exception.

To na tyle na temat wyjątków przejdźmy dalej.

UserValidator

Kolejnym zadaniem było stworzenie klasy odpowiedzialnej za walidację dodawanego Usera.

Miała ona sprawdzać trzy możliwości:

  1. Hasło musi mieć długość co najmniej 6 znaków,
  2. Login musi mieć minimum 4 znaki,
  3. Login nie może jeszcze istnieć.

Dodatkowo klasa ma być Singletonem – dlatego konstruktor jest prywatny, a została wystawiona metoda getInstance (przypominam, że metoda jest odpowiedzialna, za zwracania jednego jedynego egzemplarza obiektu).

private static UserValidator instance = null;

private UserValidator() {

}

public static UserValidator getInstance() {
    if (instance == null) {
        instance = new UserValidator();
    }

    return instance;
}

Skoro nasza klasa jest już singletonem to czas stworzyć metodę isValid(User user) do sprawdzania poprawności danych, która składa się z trzech prywatnych metod.

public boolean isValidate(User user) {
    if (isPasswordLengthEnough(user.getPassword()))
        return false;

    if (isLoginLengthEnough(user.getLogin()))
        return false;

    if (isLoginAlreadyExist(user.getLogin()))
        return false;

    return true;
}

Każda możliwość została rozrzucona do prywatnych metod – dlaczego?

Ponieważ kod staje się czytelniejszy, zaś metody prywatne i tak są widoczne tylko w klasie.

Rzucanie wyjątkami

Skoro mamy już walidator to zamiast zwracać false, niech rzuca odpowiedni wyjątek zależnie od tego co jest źle w podanych danych.

public boolean isValidate(User user) throws UserLoginAlreadyExistException, UserShortLengthLoginException, UserShortLengthPasswordException {
    if (isPasswordLengthEnough(user.getPassword()))
        throw new UserShortLengthPasswordException("Password is too short.");

    if (isLoginLengthEnough(user.getLogin()))
        throw new UserShortLengthLoginException("Login is too short.");

    if (isLoginAlreadyExist(user.getLogin()))
        throw new UserLoginAlreadyExistException("User with this login already exists.");

    return true;
}

Do rzucenia wyjątków oczywiście wykorzystujemy słowo throw oraz wczesniej stworzone wyjątki.

I w taki o to sposób mamy wykonane 3 zadania – oczywiście z grubsza. 😉

Koniec

To tyle w pierwszej części, w drugiej zajmiemy się kolejnymi trzema zadaniami – czyli refaktoryzacją serwisów.

Kamil Klimek

Od 2016 jestem programistą Java. Przez pierwsze 4 lata pracowałem jako Full Stack Java Developer. Później postanowiłem postawić nacisk na Javę, żeby jeszcze lepiej ją poznać.

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x