Nadesłany przez Kamil Dworak, 06 sierpnia 2010 00:12
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.
strategy_1_cs.cs:
/****************************************
* Wzorzec Projektowy Strategy *
* (strategia) *
* www.algorytm.org *
* Opracowal Dworak Kamil *
*****************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
public interface Pracowac
{
void pracuj();
}
public interface Dojezdzac
{
void dojezdzaj();
}
public interface SpedzanieWolnegoCzasu
{
void spedzajWolnyCzas();
}
//poszczegolne algorytmy
public class NaprawaSamochodow : Pracowac {
public void pracuj()
{
Console.WriteLine("Praca: naprawia samochody");
}
}
public class Leczenie : Pracowac
{
public void pracuj()
{
Console.WriteLine("Praca: leczy ludzi");
}
}
public class RoznoszenieListow : Pracowac
{
public void pracuj()
{
Console.WriteLine("Praca: roznosi listy");
}
}
public class Samochod : Dojezdzac
{
public void dojezdzaj()
{
Console.WriteLine("Dojazd: samochod");
}
}
public class Rower : Dojezdzac
{
public void dojezdzaj()
{
Console.WriteLine("Dojazd: rower");
}
}
public class Silownia : SpedzanieWolnegoCzasu
{
public void spedzajWolnyCzas()
{
Console.WriteLine("Wolny Czas: silownia");
}
}
public class LiteraturaPopularnoNaukowa : SpedzanieWolnegoCzasu
{
public void spedzajWolnyCzas()
{
Console.WriteLine("Wolny Czas: literatura popularno-naukowa");
}
}
//kontekst
public class Pracownik
{
private Pracowac pracowac = null;
private Dojezdzac dojezdzac = null;
private SpedzanieWolnegoCzasu spedzanieWolnegoCzasu = null;
public Pracownik(String zawod)
{
if ((zawod.ToUpper()).Equals("MECHANIK"))
{
pracowac = new NaprawaSamochodow();
dojezdzac = new Samochod();
spedzanieWolnegoCzasu = new Silownia();
}
else if ((zawod.ToUpper()).Equals("LEKARZ"))
{
pracowac = new Leczenie();
dojezdzac = new Samochod();
spedzanieWolnegoCzasu = new LiteraturaPopularnoNaukowa();
}
else if ((zawod.ToUpper()).Equals("LISTONOSZ"))
{
pracowac = new RoznoszenieListow();
dojezdzac = new Rower();
spedzanieWolnegoCzasu = new Silownia();
}
}
//tutaj wywolujemy algorytmy
public void methods()
{
pracowac.pracuj();
dojezdzac.dojezdzaj();
spedzanieWolnegoCzasu.spedzajWolnyCzas();
}
}
class Program
{
static void Main(string[] args)
{
String zawod = Console.ReadLine();
try {
Pracownik pracownik = new Pracownik(zawod);
pracownik.methods();
}catch(Exception e){
Console.WriteLine("nie ma takiego zawodu");
}
zawod = Console.ReadLine();
}
}
}


THX