资讯专栏INFORMATION COLUMN

设计模式之策略模式

104828720 / 1174人阅读

摘要:在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。而本次示例使用策略模式来实现这种数学运算。

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。其实现原理是定义一系列的算法,将他们一个个封装起来,并且是他们可以互相替换,这样避免了使用 if … else 语句所带来的复杂度和维护成。如果一个系统里有许多的类,而这些类之间的区别仅在于它们行为的不同,系统也需要动态的选择几种算法中的一种,这时使用策略模式是一种很好的解决方案。

下面的示例演示两个数之间的“加减乘除”运算,在工厂模式一节中,我们使用的是工厂模式实现这种计算,其是根据传入的不同参数分别生成不同的类实例。而本次示例使用策略模式来实现这种数学运算。代码如下:

getMessage();

}

}

}

class CalcContext{

private $_strategy = null;

public function __construct(Calc $select){

$this->_strategy = $select;

}

//设置使用的策略类

public function setCalc(Calc $select){

return $this->_strategy = $select;

}

public function calcResult($m,$n){

$this->_strategy->getValue($m,$n);

}

}

$result = new CalcContext(new AddStrategy());

$result->calcResult(10,2);

// 切换不同策略

$result->setCalc(new DivStrategy());

$result->calcResult(10,2);

?>

执行以上程序在浏览器输出结果为:12 5 。

我们使用策略模式和工厂模式都实现了这种功能,两者的区别是,工厂模式关注对象的创建,提供创建对象的接口,它是创建型的设计模式,它接受指令,创建出符合要求的实例;而策略模式是行为型的设计模式,它接受已经创建好的实例,实现不同的行为。

本文节选自 《php7实践指南》 陈小龙著

微信扫一扫,发现更多内容

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

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

相关文章

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

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

    Drinkey 评论0 收藏0
  • JavaScript设计模式策略模式

    摘要:设计模式与开发实践读书笔记。策略模式可以有效避免多重条件选择语句。当然,策略模式也有一些缺点增加了许多策略类或者策略对象。要使用策略模式,必须了解所有的,违反了最少知识原则。至此,回家咯附设计模式之发布订阅模式观察者模式 《JavaScript设计模式与开发实践》读书笔记。这本书挺好的,推荐。 俗话说,条条大路通罗马。在现实生活中,我们可以采用很多方法实现同一个目标。比如我们先定个小目...

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

    摘要:一定义定义维基百科策略模式作爲一種軟件設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。二策略模式图我们看看策略模式是有怎样设计结构的。如中创建线程池,线程池任务满时,对提交的任务做处理就使用了策略模式。以前完整的看过《大话设计模式》,虽然完整看过,也做过笔记,但现在依然很多已经很模糊。这段时间趁着离职,有时间,打算重新过一遍,该篇将介绍策略模式。一、定义定义(维基百科...

    番茄西红柿 评论0 收藏0
  • 设计模式策略模式

    摘要:一定义定义维基百科策略模式作爲一種軟件設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。二策略模式图我们看看策略模式是有怎样设计结构的。如中创建线程池,线程池任务满时,对提交的任务做处理就使用了策略模式。以前完整的看过《大话设计模式》,虽然完整看过,也做过笔记,但现在依然很多已经很模糊。这段时间趁着离职,有时间,打算重新过一遍,该篇将介绍策略模式。一、定义定义(维基百科...

    番茄西红柿 评论0 收藏0
  • 设计模式策略模式

    摘要:一定义定义维基百科策略模式作爲一種軟件設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。二策略模式图我们看看策略模式是有怎样设计结构的。如中创建线程池,线程池任务满时,对提交的任务做处理就使用了策略模式。以前完整的看过《大话设计模式》,虽然完整看过,也做过笔记,但现在依然很多已经很模糊。这段时间趁着离职,有时间,打算重新过一遍,该篇将介绍策略模式。一、定义定义(维基百科...

    MangoGoing 评论0 收藏0

发表评论

0条评论

104828720

|高级讲师

TA的文章

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