大家好,我是PHP程序员面试笔试系列的作者刘毅。本周(2019.3.11至3.15)更新135篇文章如下:周一:PHP面试设计模式-工厂模式周三:PHP面试设计模式-Builder模式周五:PHP面试常考设计模式-策略模式I上传了一本电子书《5条原则23种设计模式》到百度云,关注公众号:“六一编程库”,回复:“23”,我给你发了。以下内容如需转载,请注明作者及出处。策略模式介绍策略模式定义了一系列算法,封装了每个算法,并使它们可以互换。策略模式允许算法独立于使用它的客户端而变化。UML图说明了抽象策略角色:策略类,通常由接口或抽象类实现。具体策略作用:包装相关的算法和行为。环境角色:持有一个策略类的引用,最后调用它给客户端。应用场景1.多个类只是行为不同。您可以使用Strategy模式动态选择要在运行时执行的特定行为。2.不同的情况需要采用不同的策略(算法),或者以后可能会以其他方式实现策略。3、具体策略(算法)的实现细节对客户端是隐藏的,相互之间完全独立。使用策略模式的好处1.策略模式提供了一种管理相关算法族的方式。策略类的层次结构定义了一个算法或行为族。适当地使用继承可以将公共代码转移到父类中,从而避免重复代码。2、策略模式提供了一种替代继承关系的方式。继承可以处理多种算法或行为。如果不是策略模式,那么使用算法或行为的环境类可能有若干个子类,每个子类提供不同的算法或行为。但是算法或行为的用户与算法或行为本身混合在一起。决定使用哪种算法或采取哪种行为的逻辑与算法或行为的逻辑混杂在一起,无法独立进化。继承使得动态改变算法或行为变得不可能。3、使用策略模式可以避免使用多个条件转移语句。多份转账报表不易维护。它将采用哪种算法或行为的逻辑和算法或行为的逻辑混合起来,全部列在一个多重转移语句中,比继承的方法更加原始和落后。实现代码strategy=$strategyReflection->newInstance();}catch(ReflectionException$e){$this->strategy="";}}函数goToSchool(){$this->strategy->wayToSchool();//var_dump($this->strategy);}}//测试$context=newContext();$context->getStrategy("BusStrategy");$上下文->去去学校();?>我上传了一本电子书《5个原则23种设计模式》到百度云,关注公众号:“六一程序库”,回复:“23”,我会发给自己的和《PHP程序员面试笔试真题解析》其所著书籍已在各大电商平台销售。这本书在手,我有报价。更多PHP相关面试知识和考题,请关注公众号获取:六一编程库,对本文有任何问题或建议可以留言。我会不断改进,追求极致,谢谢大家的支持。
