策略模式是针对一组算法,将每一种算法都封装到具备共同接口的独立的类中,从而是它们能够相互替换。策略模式的最大特色是使得算法能够在不影响客户端的状况下发生变化,从而改变不一样的功能。php
<?php interface Stratege{ public function doOperation($int1,$int2); } class OperationAdd implements Stratege{ public function doOperation($int1,$int2){ return $int1 + $int2; } } class OperationSub implements Stratege{ public function doOperation($int1,$int2){ return $int1 - $int2; } } class Context{ public $stratege; public function __construct(Stratege $stra){ $this->stratege = $stra; } public function executeStrategy($int1,$int2){ echo $this->stratege->doOperation($int1,$int2)."\n"; } } $add = new OperationAdd(); $context_add = new Context($add); $context_add->executeStrategy(5,3); //输出8 $sub = new OperationSub(); $context_sub = new Context($sub); $context_sub->executeStrategy(5,3); //输出2