zl程序教程

您现在的位置是:首页 >  后端

当前栏目

设计模式:策略模式(Strategy)

模式设计模式 策略 Strategy
2023-09-27 14:29:21 时间
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 策略模式的角色: 1. 抽象策略角色(Strategy):策略类,通常由一个接口或者抽象类实现 2. 具体策略角色(ConcreteStrategy):包装了相关的算法和行为 3. 环境角色(Context):持有一个策略类的引用,最终给客户端调用

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
这里写图片描述

策略模式的角色:
1. 抽象策略角色(Strategy):策略类,通常由一个接口或者抽象类实现
2. 具体策略角色(ConcreteStrategy):包装了相关的算法和行为
3. 环境角色(Context):持有一个策略类的引用,最终给客户端调用


这里引用参考资料3中的例子来详细说明一下策略模式。
“赔了夫人又折兵”——这个是《三国演义》里的著名桥段,主要是说刘备要去吴国娶孙权妹妹了,走之前诸葛亮给了赵云三个锦囊:“你保主公入吴,可一次按这三个锦囊内之计行事。”第一计:初入东吴,告知全城刘备娶孙尚香,并拜访乔国老,让吴国太施压不让刺杀刘备;第二计:刘备沉迷酒色,乐而忘返之计,骗说:“今早接孔明来报,曹操起精兵五十万,杀奔荆州而来!军情十分紧急,请主公马上回荆州!”;第三计:逃跑之时,孙夫人断后。
1 抽象策略角色


策略模式和工厂模式的区别
工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;而策略模式是行为型的,它接受已经创建好的实例,实现不同的行为。


设计模式学习(四):Strategy策略模式 Strategy的意思是“策略”,指的是与敌军对垒时行军作战的方法。在编程中,我们可以将它理解为“算法”。无论什么程序,其目的都是解决问题。而为了解决问题,我们又需要编写特定的算法。使用Strategy模式可以整体地替换算法的实现部分,能让我们轻松地以不同的算法去解决同一个问题,这种模式就是Strategy模式。
设计模式系列1 - 模板模式&策略模式 之前一直做业务,写代码基本也都是if...else,设计模式虽然很早就知道(研究生期间把4人帮的那本《设计模式》都看了3遍),但是没有实际去写这块代码,所有总有一种雾里探花的感觉,然后时间一长,有的模式就忘记了,真遇到代码需要去重构时,或者看别人代码,还得查一下资料,“哦,原来是用的这个设计模式,对上号了”。所以这次我打算结合具体的业务场景,将常用的设计模式全部整理出来,主要是不想再眼高手低,以后代码重构时,各种设计模式能信手拈来,那么我的目的就达成了哈。
人人都会设计模式:03-策略模式--Strategy 人人都会设计模式第三篇策略模式,学会策略你基本上可以横着走,当你不知所措的时候,那么你一定需要策略模式,让我们来感受一下吧