学习PHP设计模式PHP实现策略模式(策略)

学习PHP设计模式PHP实现策略模式(策略)
1。意图

定义一系列的算法,一个一个地封装它们,并允许它们相互替换策略模式可以使算法独立于使用它的客户。

策略模式改变算法

二、战略模式结构图
三。战略模式中的主要角色

摘要战略(策略)的作用:定义所有支持的算法的通用接口,它通常与一个接口或抽象的实现。上下文中使用这个接口来调用它的策略定义的算法

具体的策略(策略)的作用:一个特定的算法与策略实现的接口

环境(上下文)的作用:保持战略级参考配置了一个ConcreteStrategy对象

四、战略模型的优缺点

政策模式的优势:

1。策略模式为管理相关的算法家族提供了一种方法

2,策略模式提供了一种替换继承关系的方法,该继承关系在独立策略类中是封闭的,以便您可以独立于其上下文更改它。

三.使用策略模式避免多条件转移语句。

政策模式的缺陷:

1。客户必须了解所有策略,这是策略模式的一个潜在缺陷。

2、策略和上下文之间的通信开销

三.策略模式可以导致很多策略类。

五。战略模式应用场景

1。许多相关的类在行为上是不同的,策略提供了一种在多个行为中配置一个行为的方法。

2,您需要使用不同的算法变体。

三.该算法使用用户不知道的数据,可以使用策略模式来避免复杂的、与算法相关的数据结构。

4,类定义了各种行为,这些行为在这个类的操作中以多种形式出现。将相关的条件分支移到各自的策略类中,以替换这些条件语句。

六,战略模式和其他模式。

模板模式:模板方法模式和策略模式的区别在于,策略模式使用委托方法提供不同的算法行为,而模板方法通过继承方法提供不同的算法行为。

共享模式(flyweight模式):如果有多个客户端需要调用相同的好政策课,他们可以让他们实现共享模式。

七。PHP策略模式的一个示例

< PHP

*抽象策略角色,用接口实现
* /
接口策略{
*算法接口
* /
公共功能algorithminterface();
}
*具体的战略作用
* /
类concretestrategya实施战略{

公共功能algorithminterface(){
echo'algorithminterface ';
}
}
*具体的战略作用B
* /
类concretestrategyb实施战略{

公共功能algorithminterface(){
echo'algorithminterface B;
}
}
*具体的战略作用C
* /
类concretestrategyc实施战略{

公共功能algorithminterface(){
echo'algorithminterface C;
}
}
*环境的作用
* /
课堂语境{
*参考战略
私人_strategy美元;

公共功能__construct(战略策略){
美元-> _strategy = $策略;
}

公共功能contextinterface(){
这_strategy美元-> -> algorithminterface();
}

}
*客户端
* /
客户端类{
*主程序
* /
公共静态函数main(){
一种新的concretestrategya美元=();
新的上下文(上下文=美元、美元);
背景- > contextinterface(美元);

strategyb美元=新concretestrategyb();
为上下文=新的上下文($ strategyb);
背景- > contextinterface(美元);

strategyc美元=新concretestrategyc();
为上下文=新的上下文($ strategyc);
背景- > contextinterface(美元);
}

}

客户::主();
>
以上是利用php实现的战略模式代码,以及一些战略模式分化的概念,希望能对大家的学习有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部