<?php //策略模式定義:定義一系列的算法,把它們一個個封裝起來, 而且使它們可相互替換。本模式使得算法的變化可獨立於使用它的客戶。 /** * 定義策略接口 */ interface StrategyInterface{ //強制策略類實現的方法 public function method(); } /** * 抽象策略類 */ abstract class Strategy implements StrategyInterface{ //強制策略子類實現該方法 abstract public function method(); public function init(){ echo "我是公共方法".PHP_EOL; } } class Strategy1 extends Strategy{ //實現接口方法 public function method(){ echo "我是策略方法1".PHP_EOL; } } class Strategy2 extends Strategy{ //實現接口方法 public function method(){ echo "我是策略方法2".PHP_EOL; } } /** * 客戶端類 */ class Client{ public function getMethod(Strategy $Strategy){ $Strategy->method(); } } $obj = new Client(); $obj -> getMethod(new Strategy1()); $obj -> getMethod(new Strategy2());