Nadesłany przez Marcin Prokop, 05 listopada 2013 21:21
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
strategy.rb:
# Wzorzec Projektowy Strategy # (strategia ) # www.algorytm.org # Strategie class NaprawaSamachodow def pracuj puts "Praca: naprawia samochody" end end class Leczenie def pracuj puts "Praca: leczy ludzi" end end class RoznoszenieListow def pracuj puts "Praca: roznosi listy" end end class Samochod def dojezdzaj puts "Dojazd: samochod" end end class Rower def dojezdzaj puts "Dojazd: rower" end end class Silownia def spedzaj_wolny_czas puts "Wolny Czas: silownia" end end class LiteraturaPopularnoNaukowa def spedzaj_wolny_czas puts "Wolny Czas: literatura popularno-naukowa" end end # Kontekst class Pracownik def initialize(zawod) if zawod.casecmp("mechanik").zero? @pracowac = NaprawaSamachodow.new @dojezdzac = Samochod.new @spedzanie_wolnego_czasu = Silownia.new elsif zawod.casecmp("lekarz").zero? @pracowac = Leczenie.new @dojezdzac = Samochod.new @spedzanie_wolnego_czasu = LiteraturaPopularnoNaukowa.new elsif zawod.casecmp("listonosz").zero? @pracowac = RoznoszenieListow.new @dojezdzac = Rower.new @spedzanie_wolnego_czasu = Silownia.new end end # wywołujemy metody strategii def metody @pracowac.pracuj @dojezdzac.dojezdzaj @spedzanie_wolnego_czasu.spedzaj_wolny_czas end end zawod = gets.chomp begin pracownik = Pracownik.new zawod pracownik.metody rescue puts "nie ma takiej metody" end