• php 设计模式之策略模式


    策略模式:定义算法,并将其封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

    步骤:1、抽象策略角色:定义接口或抽象类

               2、具体策略角色:实现该接口(抽象类),即具体的算法实现

               3、环境角色:对具体方法的调用

    适用场景:1、多个类只是行为方式不用,在操作时动态的选择具体使用的方法(算法)

                      2、在不同的环境下使用算法,比if {}else{}更具有维护性和扩展性

    例子代码如下

    <?php
    //定义接口 interface FlyBehavior{ public function fly(); } //具体方法实现(例子中有不同的飞行方式) class FlyWithWings implements FlyBehavior{ public function fly(){ echo "Fly With Wings \n"; } } class FlyWithNo implements FlyBehavior{ public function fly(){ echo "Fly With No Wings \n"; } }
    //定义鸭子的超类 class Duck{ private $_flyBehavior; public function performFly(){ $this->_flyBehavior->fly(); } public function setFlyBehavior(FlyBehavior $behavior){ $this->_flyBehavior = $behavior; } } //继承超类 class RubberDuck extends Duck{ } // Test Case $duck = new RubberDuck(); /* 想让鸭子用翅膀飞行 */ $duck->setFlyBehavior(new FlyWithWings()); $duck->performFly(); /* 想让鸭子不用翅膀飞行 */ $duck->setFlyBehavior(new FlyWithNo()); $duck->performFly();

    初学PHP和设计模式,以上是今天早上所学,不足之处,请多多指教 也欢迎互相交流

  • 相关阅读:
    使用脚本改变树控件的行为 (转)点文本 收..
    (面包屑)SiteMapPath控件简化Web网站导航 (转)
    Web.config详解(转)
    SiteMap(站点地图)示例(转)
    url传递中文的解决方案总结(转)
    INI文件编程,WINAPI函数WritePrivateProfileString,GetPrivateProfileString(转帖)
    hdu 2708
    hdu 1709
    hdu 1045
    hdu 2714
  • 原文地址:https://www.cnblogs.com/224yang/p/7245120.html
Copyright © 2020-2023  润新知