手机版

学习php设计模式php实现策略模式

时间:2021-09-21 来源:互联网 编辑:宝哥软件园 浏览:

首先,它旨在定义一系列算法,逐个打包,并使它们可互换。策略模式可以使算法独立于使用它的客户而改变。改变策略模式的是算法2。战略模式结构图。

三.策略模式中的主要角色抽象策略角色:定义所有支持算法的公共接口。它通常被实现为一个接口或抽象。Context使用这个接口调用其算法具体策略角色由具体策略定义:用策略接口实现一个特定的算法环境角色:持有一个Strategy类的引用,使用一个具体的Strategy对象进行配置。4.战略模式的优缺点:1。策略模式提供了一种管理相关算法族的方法。2.策略模式提供了一种替代继承关系的方法。该算法包含在一个独立的策略类中,因此您可以独立于其上下文对其进行更改。3.使用策略模式可以避免使用多个条件转移语句。政策模式的弊端:1。客户必须知道所有的政策,这是政策模式的潜在劣势;2.策略和上下文之间的通信开销;3.策略模式会导致很多策略类;5.策略模式的应用场景;1.许多相关的类只是行为不同。“策略”提供了一种用几种行为之一配置类的方法。2.需要算法的不同变体。3.该算法使用客户不应该知道的数据。策略模式可以用来避免暴露与算法相关的复杂数据结构。4.一个类定义了多种行为,这些行为在这个类的操作中以各种形式出现。相关的条件分支被移动到它们各自的策略类来替换这些条件语句。不及物动词策略模式和其他模式模板模式:模板方法模式和策略模式的区别在于,策略模式使用委托的方法提供不同的算法行为,而模板方法使用继承的方法提供不同的算法行为享受模式(flyweight patterns):如果有多个客户端对象需要调用同一个策略类,则可以实现享受模式。七.策略模式的PHP示例。

?Php/** *抽象策略角色,用接口实现*/接口Strategy {/** *算法接口*/公共函数算法接口();}/* * *特定战略角色a */class concresetrategya实现战略{public function算法接口(){echo '算法接口ABR/';}}/* * *具体策略角色b */类具体策略b实现策略{公共函数算法接口(){echo '算法接口BBR/';}}/* * *具体策略角色c */类具体策略实现策略{公共函数算法接口(){echo '算法接口CBR/';}}/* * *环境角色*/类上下文{/*引用的策略*/private $ _ strategy;公共函数_ _ construct(Strategy $ Strategy){ $ this-_ Strategy=$ Strategy;}公共函数context interface(){ $ this-_ strategy-algorithm interface();}}/* * *客户端*/classclient {/* * *主程序。*/public static function main(){ $ strategya=new concrete state grateya();$context=新上下文($ strategyA);$ context-context interface();$strategyB=新的混凝土策略b();$context=新上下文($ strategyB);$ context-context interface();$ strategyC=new concrete strategyC();$context=新上下文($ strategyC);$ context-context interface();} } client :3360 main();以上是用php实现策略模式的代码,关于策略模式有一些概念上的差异,希望对大家的学习有所帮助。

版权声明:学习php设计模式php实现策略模式是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。