Przesyłanie danych pomiędzy klientem, a serwerem z wykorzystaniem socketów

0

Witam. Piszę aplikację typu klient-serwer opartą o sockety. Do serwera może podłączyć się kilku klientów. Aplikacja daje możliwość np. dodawania usuwania edytowania użytkownika, grupy, wypożyczenia itp. I tutaj moje pytanie, robię to na zasadzie, że klient przesyła wiadomość typu dodajUżytkownika i następnie obiekt z tym użytkownikiem. A serwer odbiera wiadomość następnie obiekt i zapisuje go do bazy. Problemem jest to, że tych operacji jest wiele i serwer w momencie odbioru musi sprawdzić jaka jest treść wiadomości i robi mi się spora drabinka ifów. Coś takiego:

if(wiadomosc.equals("DodajUżytkownika") {
//rób coś
}if(wiadomosc.equals("EdytujUżytkownika") {
//rób coś
}
if(wiadomosc.equals("UsuńUżytkownika") {
//rób coś
}
if(wiadomosc.equals("DodajGrupę") {
//rób coś
}

itd. Trochę tych ifów by było. Moje pytanie jest w jaki inny sposób mogę to rozwiązać? Taka drabinka ifów jest raczej nieelegancka i chyba powinno się stosować inne rozwiązania. Tylko jakie?

1

http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html
Słownik gdzie kluczem jest napis, zaś wartością jest lambda.

0

Nie miałem jeszcze styczności z lambdą. Czasami nie ma być ona dostępna od Javy 8, której premiera w 2014?

Jeśli ktoś wie to poprosiłbym o jakieś alternatywne rozwiązanie do powyższego.

1

Ja bym tu zamiast lambdy użył zwykłej Strategii. Masz interfejs wspólny dla wszystkich "akcji" które może wywołać użytkownik, czyli będzie tam pewnie jedna metoda "wywołajAkcje". Tworzysz osobną klasę implementującą ten inferfejs dla każdej akcji. Do Map<String,TwojInterfejs> wrzucasz obiekty tych klas wraz ze stringiem który określa ich nazwę, a potem jak dostaniesz od użytkownika akcje dajesz
mapa.get(komenda).wykonajAkcje();

1 użytkowników online, w tym zalogowanych: 0, gości: 1