Total members 11889 |It is currently Fri Mar 29, 2024 3:31 am Login / Join Codemiles

Java

C/C++

PHP

C#

HTML

CSS

ASP

Javascript

JQuery

AJAX

XSD

Python

Matlab

R Scripts

Weka





Code:

<?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 cost( Product $lesson );
    
abstract function chargeType();
}

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

class
FixedCostStrategy extends CostStrategy {
    function
cost( Product $lesson ) {
        return
30;
    }

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

$lessons[] = new ProductTwo( 4, new TimedCostStrategy() );
$lessons[] = new ProductOne( 4, new FixedCostStrategy() );

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


?>




_________________
M. S. Rakha, Ph.D.
Queen's University
Canada


Author:
Mastermind
User avatar Posts: 2715
Have thanks: 74 time
Post new topic Reply to topic  [ 1 post ] 

  Related Posts  to : Strategy Pattern
 DAO Pattern     -  
 DAO design pattern     -  
 about dao design pattern     -  
 Factory pattern     -  
 The Singleton Pattern     -  
 Singleton Pattern Demo     -  
 Replacing a Pattern with a Found String     -  



Topic Tags

PHP OOP






Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team
Codemiles.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Amazon.com