Nadesłany przez Kamil Dworak, 22 września 2010 22:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
java.java:
/****************************************
* Wzorzec Projektowy Command *
* (polecenie) *
* www.algorytm.org *
* Kontakt *
* kamil.dworak.1988[malpka]gmail.com *
* Opracowal Dworak Kamil *
*****************************************/
interface Polecenie {
public void wykonaj();
public void cofnij();
}
/* obiekt wywolujacy */
class Trener {
private Polecenie mode;
public void setMode(Polecenie polecenie){
mode = polecenie;
}
public void rozkaz(){
mode.wykonaj();
}
public void cofnij(){
mode.cofnij();
}
}
/* odbiorca */
class Zawodnik {
private String id;
public Zawodnik(String id){
this.id = id;
}
public void zacznijBiegac(){
System.out.println("zawodnik " + id + " biega" );
}
public void przestanBiegac(){
System.out.println("zawodnik " + id + " przestal biegac" );
}
public void zacznijPlywac(){
System.out.println("zawodnik " + id + " plywa" );
}
public void przestanPlywac(){
System.out.println("zawodnik " + id + " przestal plywac" );
}
public void zacznijCwiczyc(){
System.out.println("zawodnik " + id + " cwiczy" );
}
public void przestanCwiczyc(){
System.out.println("zawodnik " + id + " przestal cwiczyc" );
}
}
/* Polecenie */
class Bieganie implements Polecenie {
private Zawodnik zawodnik; //obiekt wykonujacy
public Bieganie (Zawodnik zawodnik){
this.zawodnik = zawodnik;
}
public void wykonaj(){
zawodnik.zacznijBiegac();
}
public void cofnij(){
zawodnik.przestanBiegac();
}
}
/* Polecenie */
class Plywanie implements Polecenie{
private Zawodnik zawodnik; //obiekt wykonujacy
public Plywanie(Zawodnik zawodnik){
this.zawodnik = zawodnik;
}
public void wykonaj(){
zawodnik.zacznijPlywac();
}
public void cofnij(){
zawodnik.przestanPlywac();
}
}
/* Polecenie */
class Cwiczenie implements Polecenie {
private Zawodnik zawodnik; //obiekt wykonujacy
public Cwiczenie(Zawodnik zawodnik){
this.zawodnik = zawodnik;
}
public void wykonaj(){
zawodnik.zacznijCwiczyc();
}
public void cofnij(){
zawodnik.przestanCwiczyc();
}
}
/* Polecenie */
class PelnyTrening implements Polecenie{
Polecenie[] tab;
public PelnyTrening( Polecenie[]tab){
this.tab = tab;
}
public void wykonaj(){
for(Polecenie temp : tab){
temp.wykonaj();
}
}
public void cofnij(){
for(Polecenie temp : tab){
temp.cofnij();
}
}
}
public class Main {
public static void main(String[]args){
Trener trener = new Trener();
Zawodnik z1 = new Zawodnik("Kowalski");
Zawodnik z2 = new Zawodnik("Nowak");
Zawodnik z3 = new Zawodnik("Brzeczyszczykiewicz");
Bieganie bieganie = new Bieganie(z1);
Plywanie plywanie = new Plywanie(z2);
trener.setMode(bieganie);
trener.rozkaz();
trener.setMode(plywanie);
trener.rozkaz();
trener.cofnij();
System.out.println();
Polecenie []tab = { new Cwiczenie(z3), new Bieganie(z3), new Plywanie(z3)};
PelnyTrening pelnyTrening = new PelnyTrening(tab);
trener.setMode(pelnyTrening);
trener.rozkaz();
}
}

