} class Divider { public function divide($a, $b) { if ($b == 0) { throw new Exception('Division by zero.'); } return $a / $b; } } // Client code $adder = new Adder(); echo '254 + 113 = ', $adder->add(254, 113), "\n"; $divider = new Divider(); echo '256 / 8 = ', $divider->divide(256, 8), "\n"; class CalculatorFacade { public function __construct(Adder $adder, Subtractor $subtractor, Multiplier $multiplier, Divider $divider) { $this->_adder = $adder; $this->_subtractor = $subtractor; $this->_multiplier = $multiplier; $this->_divider = $divider; } public function calculate($expression) { list($a, $operator, $b) = explode(' ', $expression); // eliminating switch constructs is not in the intent of this pattern switch ($operator) { case '+':