资讯专栏INFORMATION COLUMN

php设计模式之策略模式

dabai / 2759人阅读

摘要:策略模式概念策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中此模式让算法的变化独立于使用算法的客户。从而让程序结构更灵活,具有更好的扩展性和维护性策略模式结构图策略模式角色说明抽象策略角色定义所有支持的算法的公共接口。

策略模式概念

策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,此模式让算法的变化独立于使用算法的客户。从而让程序结构更灵活,具有更好的扩展性和维护性

策略模式结构图

策略模式角色说明

抽象策略角色:定义所有支持的算法的公共接口。通常是以一个接口或抽象来实现

具体策略角色:实现接口的具体算法

环境角色:持有抽象策略角色的引用

决策模式代码实现

实际场景中,为了避免在代码的重复,这里引用鸭子游戏的列子,参考文献: 《head first 设计模式》。
鸭子游戏中有个超类Durk,各自鸭子子类继承超类,在超类中有个fly方法,然而鸭子子类中会存在橡皮鸭子类,而橡皮鸭子是不会fly的,可以使用重载的方法,把橡皮鸭的fly()方法设置为空,但是当不会飞的鸭子变多的时候,代码重复就会越来越多,这个时候我们就可以用到策略模式来实现。

_flyBehavior = $object;
    }

    public function fly(){
        return $this->_flyBehavior->fly();
    }
}

$duck = new Duck(new FlyWithWings());
echo $duck->fly();
总结

在实际场景中,如果应用需要变化之处,把他们独立出来,多带带封装,封装好接口后,通过指定的接口实现类进行算法的变化

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22464.html

相关文章

  • PHP面试常考设计模式——策略模式

    摘要:策略模式介绍策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。使用策略模式的好处策略模式提供了管理相关的算法族的办法。使用策略模式可以避免使用多重条件转移语句。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工...

    Drinkey 评论0 收藏0
  • php设计模式

    摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...

    Dionysus_go 评论0 收藏0
  • php设计模式

    摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...

    vspiders 评论0 收藏0
  • PHP设计模式策略模式

    摘要:简介策略模式定义了算法族,分别封装起来,让他们之间可以相互替换。策略模式提供了可以替换继承关系的办法。使用策略模式可以避免使用多重条件转移语句。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。 简介 策略模式定义了算法族,分别封装起来,让他们之间可以相互替换。该模式让算法独立于使用它的客户而独立变化。 组成 抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 具体策略角...

    Blackjun 评论0 收藏0
  • PHP设计模式系列入门

    摘要:设计模式系列之入门设计模式是一套被反复使用多数人知晓的经过分类编目的代码设计经验的总结。毫无疑问,设计模式于己于他人于系统都是多赢的设计模式使代码编制真正工程化设计模式是软件工程的基石脉络,如同大厦的结构一样。 PHP设计模式系列之入门 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...

    animabear 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<