strategy = $strategy; } public function sort($array) { for ($i = sizeof($array)-1; $i >= 0; --$i) { for ($j = 0; $j < $i; ++$j ) { $cmp = $this->strategy->compare( $array[$j], $array[$j+1] ); if ($cmp > 0) { $tmp = $array[$j]; $array[$j] = $array[$j+1]; $array[$j+1] = $tmp; } } } return $array; } } $bs = new BubbleSort; $bs->setStrategy(new AscendingCompare); print_r($bs->sort(array(22, 4, 1978))); $bs->setStrategy(new DescendingCompare); print_r($bs->sort(array(22, 4, 1978))); ?>