Strategy Pattern Demo : Strategy Pattern : Design Patterns PHP Source Code


PHP Source Code » Design Patterns » Strategy Pattern »

 

Strategy Pattern Demo




<?php
abstract class Product {
    private   $count;
    private   $costStrategy;

    function __construct$count, CostStrategy $strategy ) {
        $this->count = $count;
        $this->costStrategy = $strategy;
    }

    function cost() {
        return $this->costStrategy->cost$this );
    }

    function chargeType() {
        return $this->costStrategy->chargeType( );
    }

    function getDuration() {
        return $this->count;
    }
}

class ProductOne extends Product {
}

class ProductTwo extends Product {
}

abstract class CostStrategy {
    abstract function costProduct $lesson );
    abstract function chargeType();
}

class TimedCostStrategy extends CostStrategy {
    function costProduct $lesson ) {
        return $lesson->getDuration() );
    }
    function chargeType() {
        return "hourly rate";
    }
}

class FixedCostStrategy extends CostStrategy {
    function costProduct $lesson ) {
        return 30;
    }

    function chargeType() {
        return "fixed rate";
    }
}

$lessons[] new ProductTwo4new TimedCostStrategy() );
$lessons[] new ProductOne4new FixedCostStrategy() );

foreach $lessons as $lesson ) {
    print "lesson charge {$lesson->cost()}. ";
    print "Charge type: {$lesson->chargeType()}n";
}


?>

           
       



HTML code for linking to this page:

Follow Navioo On Twitter

PHP Source Code

 Navioo Design Patterns
» Strategy Pattern