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?

Budowniczy (builder) - Implementacja w Php
Ocena użytkownikóww: *****  / 0
SłabyŚwietny
Nadesłany przez Piotr Synowiec, 29 kwietnia 2017 13:43
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

builder.php:
<?php

// Wzorzec Projektowy Builder(budowniczy)
// www.algorytm.org

/* produkt koncowy */
class ZestawKomputerowy
{
    private $monitor;
    private $procesor;
    private $grafika;
    private $ram;
    private $hdd;

    public function setMonitor($monitor)
    {
        $this->monitor = $monitor;
    }

    public function setProcesor($procesor)
    {
        $this->procesor = $procesor;
    }

    public function setGrafika($grafika)
    {
        $this->grafika = $grafika;
    }

    public function setRam($ram)
    {
        $this->ram = $ram;
    }

    public function setHdd($hdd)
    {
        $this->hdd = $hdd;
    }

    public function show()
    {
        if($this->monitor != null) { 
            print("Monitor = " . $this->monitor . PHP_EOL);
        }
        if($this->procesor != null) { 
            print("Procesor = " . $this->procesor . PHP_EOL);
        }
        if($this->grafika != null) { 
            print("Grafika = " . $this->grafika . PHP_EOL);
        }
        if($this->ram != null) { 
            print("RAM = " . $this->ram . PHP_EOL);
        }
        if($this->hdd != null) { 
            print("HDD = " . $this->hdd . PHP_EOL);
        }
    }

}

/* nasz glowny interface */
abstract class Builder 
{
    protected $zestawKomputerowy;
 
    public function newZestaw()
    {
        $this->zestawKomputerowy = new ZestawKomputerowy();
    }
 
    public function getZestaw()
    {
        return $this->zestawKomputerowy;
    }
 
    public abstract function buildMonitor();
    public abstract function buildProcesor();
    public abstract function buildGrafika();
    public abstract function buildRam();
    public abstract function buildHdd();
}

class ZestawXT001 extends Builder 
{
    public function buildMonitor()
    {
        $this->zestawKomputerowy->setMonitor("Benq 19");
    }

    public function buildProcesor()
    {
        $this->zestawKomputerowy->setProcesor("amd");
    }
 
    public function buildGrafika()
    {
        $this->zestawKomputerowy->setGrafika("ATI");
    }

    public function buildRam()
    {
        $this->zestawKomputerowy->setRam("DDR3");
    }
    
    public function buildHdd() 
    {
        $this->zestawKomputerowy->setHdd("Caviar");
    }
}

class ZestawABC996 extends Builder 
{
    public function buildMonitor()
    {
        $this->zestawKomputerowy->setMonitor("LG");
    }

    public function buildProcesor()
    {
        $this->zestawKomputerowy->setProcesor("Intel");
    }
 
    public function buildGrafika()
    {
        // zestaw nie obejmuje karty graficznej
    }

    public function buildRam()
    {
        $this->zestawKomputerowy->setRam("DDR");
    }
    
    public function buildHdd() 
    {
        $this->zestawKomputerowy->setHdd("Samsung");
    }
}

/* kierownik */
class Director 
{
    private $builder;
 
    public function setBuilder($builder)
    {
        $this->builder = $builder;
    }
 
    public function getZestaw()
    {
        return $this->builder->getZestaw();
    }
 
    public function skladaj()
    {
        $this->builder->newZestaw();
        $this->builder->buildMonitor();
        $this->builder->buildProcesor();
        $this->builder->buildHdd();
        $this->builder->buildRam();
        $this->builder->buildGrafika();
    }
}

$szef = new Director();
   
$builder1 = new ZestawXT001();
$builder2 = new ZestawABC996();

$szef->setBuilder($builder1);
$szef->skladaj();
$zestaw1 = $szef->getZestaw();

$szef->setBuilder($builder2);
$szef->skladaj();
$zestaw2 = $szef->getZestaw();

print('Zestaw 1' . PHP_EOL );
$zestaw1->show();
print(PHP_EOL);
print('Zestaw 2' . PHP_EOL );
$zestaw2->show();
Dodaj komentarz