🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 策略模式 * * * * * 说明: > 将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,用意是对一组算法的封装。动态的选择需要的算法并使用 适用场景: 1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。 2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。 3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。 4、客户端必须知道所有的策略类,并自行决定使用哪一个策略类,策略模式只适用于客户端知道所有的算法或行为的情况。 5、 策略模式造成很多的策略类,每个具体策略类都会产生一个新类。 实例: ~~~ <?php abstract class baseAgent { //抽象策略类 abstract function PrintPage(); } //用于客户端是IE时调用的类(环境角色) class ieAgent extends baseAgent { function PrintPage() { return 'IE'; } } //用于客户端不是IE时调用的类(环境角色) class otherAgent extends baseAgent { function PrintPage() { return 'not IE'; } } class Browser { //具体策略角色 public function call($object) { return $object->PrintPage (); } } $bro = new Browser (); echo $bro->call ( new ieAgent () ); ?> ~~~ 资料来源: https://www.cnblogs.com/yangjinjin/archive/2013/01/31/2887498.html https://blog.csdn.net/flitrue/article/details/52614599 https://blog.csdn.net/jhq0113/article/details/45771863