アルゴリズムの実装を外部にカプセル化して交換できるようにするパターン カプセル化するアルゴリズムに必要な動作をインターフェースに定義して各々実装させる。 型定義が必要な言語ではインターフェース型の変数で受ける。 /** * Strategyパターンサンプル * @create 2007/06/15 */ /** * Vehicle - 乗物のスーパークラス */ class Vehicle { private $_speed; /// private $_alarm; /// /** * setSpeedType - 引数で受け取った変速を格納する * @param ITypeSpeed $speed * @return void */ public function setSpeedType($speed) { $this->_speed = $speed; } /** * setAlarmType - 引数で受け取った警告音を格納する * @param ITypeAlarm $alarm * @return void */ public function setAlarmType($alarm) { $this->_alarm = $alarm; } /** * dispShift */ public function dispShift() { $this->_speed->dispShift(); } /** * shiftUp */ public function shiftUp() { $this->_speed->shiftUp(); } /** * shiftDown */ public function shiftDown() { $this->_speed->shiftDown(); } /** * alarm */ public function alarm() { $this->_alarm->alarm(); } } /** * 変速インターフェース */ interface ITypeSpeed { public functi...