algorytm.org

Implementacja w Php



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Strategia (strategy) - Implementacja w Php
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
Nadesłany przez Marek, 31 lipca 2015 15:11
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

strategy.php:
<?php

/****************************************
*   Wzorzec Projektowy Strategy         *
*   (strategia)                         *   
*   www.algorytm.org                    *
*****************************************/

interface Pracowac { public function pracuj(); }
interface Dojezdzac { public function dojezdzaj(); }
interface WolnyCzas { public function spedzajWolnyCzas(); }


class NaprawaSamochodow implements Pracowac { public function pracuj() { return 'Praca: naprawia samochody.'; }}
class Leczenie          implements Pracowac { public function pracuj() { return 'Praca: leczy ludzi.'; }}
class RoznoszenieListow implements Pracowac { public function pracuj() { return 'Praca: Roznosi listy.'; }}


class Samochod          implements Dojezdzac { public function dojezdzaj() { return 'Dojazd: samochod.'; }}
class Rower             implements Dojezdzac { public function dojezdzaj() { return 'Dojazd: rower.'; }}


class Silownia          implements WolnyCzas { public function spedzajWolnyCzas() { return 'Wolny czas: siłka.'; }}
class Czytaj            implements WolnyCzas { public function spedzajWolnyCzas() { return 'Wolny czas: czytanie.'; }}

class Pracownik
{
    private $pracowac;
    private $dojezdzac;
    private $wolnyCzas;

    public function __construct($zawod)
    {
        echo $zawod . PHP_EOL;

        switch($zawod)
        {
            case 'mechanik':
                $this->pracowac = new NaprawaSamochodow();
                $this->dojezdzac = new Samochod();
                $this->wolnyCzas = new Silownia();
                break;
            case 'lekarz':
                $this->pracowac = new Leczenie();
                $this->dojezdzac = new Samochod();
                $this->wolnyCzas = new Czytaj();
                break;
            case 'listonosz':
                $this->pracowac = new RoznoszenieListow();
                $this->dojezdzac = new Rower();
                $this->wolnyCzas = new Silownia();
        }
    }

    public function methods()
    {
        echo $this->pracowac->pracuj() . PHP_EOL;
        echo $this->dojezdzac->dojezdzaj() . PHP_EOL;
        echo $this->wolnyCzas->spedzajWolnyCzas() . PHP_EOL;
    }
}

$zawod = 'mechanik';
try{
    $pracownik = new Pracownik($zawod);
    $pracownik->methods();
} catch (Exception $e) {
    return 'Nie ma takiego zawodu.';
}

?>
Dodaj komentarz