Witam.
Walczę obecnie z wzorcami i ugrzązłem przy dekoratorze mam takie zadanie:
Napisz klasę reprezentującą kolejkę napisów. Będziemy ją traktować jak prosty serwer pocztowy, na który możemy wrzucać tekstowe wiadomości, a następnie je pobierać (w kolejności przychodzenia). Możesz wykorzystać klasę LinkedList.
- Stwórz klasę Dekoratora do tej kolejki. Będzie on (abstrakcyjną) klasą bazową dla kolejnych dekoratorów i sam w sobie nic nie robi.
Następnie zdefiniuj dekoratory uzupełniające funkcjonalność kolejki o:
- dopisywanie czasu i daty wysłania wiadomości (w postaci doklejonego tekstu "wysłano ..."),
- dopisywanie czasu i daty odebrania wiadomości (w postaci doklejonego tekstu "odebrano ..."),
- numerowania wiadomości (każda wiadomość powinna otrzymać swój unikalny numer, dodawany do treści wiadomości),
- filtrowanie wiadomości (filtr powinien blokować wiadomości zawierające wskazany (w konstruktorze) ciąg znaków, np. "sale"),
- cenzurowanie wiadomości (wskazany ciąg znaków powinien być zamieniany na "***"),
- szyfrowanie danych (jakimś prostym algorytmem).
W programie testowym wypróbuj różnych kombinacji dekoratorów oraz łączenia kilku dekoratorów tej samej klasy (np. połącz kilka filtrów, każdy po innym słowie).
Niżej zamieszczam mój wstępny kod ale coś mi nie idzie jakby mógł ktoś mi to w miarę po ludzku wyjaśnić i powiedzieć gdzie robię błędy będę wdzięczny
import java.sql.Date;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
class mailbox {
protected List<String> box = new LinkedList<String>();
mailbox(){}
public String send(String a){
box.add(a);
int i = box.size();
return box.get(i-1);
}
public String read(){
return box.get(0);
}
public void del(){
box.remove(0);
}
}
abstract class extraf extends mailbox{
public abstract String send();
public abstract String read();
}
class sendtime extends extraf{
mailbox box;
public sendtime(mailbox box){
this.box = box;
}
public String send(String a){
Time x = new Time (12, 0, 0); //lub jakies tam pobranie z bazy
int iCzas = x.getDate();
Date data = new Data (iCzas);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss");
return box.send(a) +" wyslano"+ formatter.format(data);
}
public String read(){
Time x = new Time (12, 0, 0); //lub jakies tam pobranie z bazy
int iCzas = x.getDate();
Date data = new Data (iCzas);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss");
return box.read() +" odebrano"+ formatter.format(data);
}
}