phpコンビネーションモード

1450 ワード

/*
                               。
   :             ,               。                   。
   :                。       ,       。           。
 */


/**
 *     
 *@author li.yonghuan
 *@version 2014.01.15
 */
abstract class Unit{
    /**
     *    
     *
     */
    abstract function bombardStrength();
}


/**
 *   
 *@author li.yonghuan
 *@version 2014.01.15
 *
 */
class Archer extends Unit{
    /**
     *    
     *
     */
    public function bombardStrength(){
        return '4';
    }
}

/**
 *      
 *@author li.yonghuan
 *@version 2014.01.15
 */
class laserCannonUnit extends Unit{
    /**
     *    
     *
     */
    public function bombardStrength(){
        return '42';
    }
}

/**
 *  
 *@author li.yonghuan
 *@version 2014.01.15
 */
class Arm{
    /**
     *         
     *@var array
     */
    private $units = array();

    /**
     *    
     *@param Unit object
     */
    public function addUnit( Unit $unit ){
       array_push( $this->units, $unit );
    }

    /**
     *    
     *
     */
    public function bombardStrength(){
        $strength = 0;
        foreach( $this->units as $unit ){
            $strength += $unit->bombardStrength();
        }
        return $strength;
    }
}


$archer = new Archer();
$laserCannon = new laserCannonUnit();

$arm = new Arm();
$arm->addUnit( $archer );
$arm->addUnit( $laserCannon );

echo $arm->bombardStrength();