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.
csharp.cs:
/**************************************** * Wzorzec Projektowy Command * * (polecenie) * * www.algorytm.org * * Kontakt * * kamil.dworak.1988[malpka]gmail.com * * Opracowal Dworak Kamil * *****************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication6 { public interface Polecenie { void wykonaj(); 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() { Console.WriteLine("zawodnik " + id + " biega" ); } public void przestanBiegac() { Console.WriteLine("zawodnik " + id + " przestal biegac" ); } public void zacznijPlywac() { Console.WriteLine("zawodnik " + id + " plywa" ); } public void przestanPlywac() { Console.WriteLine("zawodnik " + id + " przestal plywac" ); } public void zacznijCwiczyc() { Console.WriteLine("zawodnik " + id + " cwiczy" ); } public void przestanCwiczyc() { Console.WriteLine("zawodnik " + id + " przestal cwiczyc"); } } /* Polecenie */ class Bieganie : 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 : 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 : 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 : Polecenie { private Polecenie[] tab; public PelnyTrening( Polecenie[]tab) { this.tab = tab; } public void wykonaj() { foreach(Polecenie temp in tab) { temp.wykonaj(); } } public void cofnij() { foreach(Polecenie temp in tab){ temp.cofnij(); } } } class Program { 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(); Console.WriteLine(); Polecenie []tab = { new Cwiczenie(z3), new Bieganie(z3), new Plywanie(z3)}; PelnyTrening pelnyTrening = new PelnyTrening(tab); trener.setMode(pelnyTrening); trener.rozkaz(); Console.ReadLine(); } } }
Prościej się nie da chyba :)