博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之策略模式
阅读量:4981 次
发布时间:2019-06-12

本文共 1259 字,大约阅读时间需要 4 分钟。

什么是策略模式?

Strategy pattern is mainly about using different algorithm at different situation.

策略模式。又叫算法簇模式,就是定义了不同的算法族,而且之间能够互相替换,此模式让算法的变化独立于使用算法的客户。

策略模式的优点在于你能够动态的改变对象的行为。
一般的。策略模式主要分为下面三个角色: 
1.环境角色(Context):持有一个策略类引用 
2.抽象策略(Strategy):定义了多个详细策略的公共接口,详细策略类中各种不同的算法以不同的方式实现这个接口;Context使用这些接口调用不同实现的算法。一般的,我们使用接口或抽象类实现。 

3.详细策略(ConcreteStrategy):实现抽象策略类中的相关的算法或操作。 

/** * 策略模式首先定义了一个接口行为。实现了接口的子类有不同的行为实现 然后再一个场景类中维护了一个指向接口类的引用。 这样在不同的场景下调用不同的 * 行为算法来处理 */interface Strategy {	// 定义接口方法	public void processPrice(int price);}// VIP待遇class Vip implements Strategy {	public void processPrice(int price) {		System.out.println("VIP用" + price + "元坐在VIP房");	}}// 普通待遇class Ordinary implements Strategy {	public void processPrice(int price) {		System.out.println("Ordinary用" + price + "元坐在普通房");	}}class Situation {	private Strategy strategy;	public Situation(Strategy strategy) {		this.strategy = strategy;	}	public void handConsumer(int price) {		this.strategy.processPrice(price);	}}public class Main {	public static void main(String[] args) {		Ordinary ord = new Ordinary();		Vip vip = new Vip();		Situation s1 = new Situation(ord);		Situation s2 = new Situation(vip);		s1.handConsumer(10);		s2.handConsumer(10);	}}

转载于:https://www.cnblogs.com/lxjshuju/p/7389852.html

你可能感兴趣的文章
面向对象技术
查看>>
ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上
查看>>
用Excel做出比肩任务管理软件的操作技巧
查看>>
MySQL基础复习
查看>>
盲签名协议
查看>>
Flutter 获取控件尺寸和位置
查看>>
互联网时代的密码记忆模型
查看>>
51nod_learn_greedy_活动安排2
查看>>
物联网架构成长之路(32)-SpringBoot集成MQTT客户端
查看>>
C++中构造函数的手动和自动调用方式
查看>>
重构----学习心得
查看>>
2018-2019-2 网络对抗技术 20165236 Exp2 后门原理与实践
查看>>
读《SQL优化核心思想》:你不知道的优化技巧
查看>>
查找算法总结
查看>>
10-4. 字符串循环左移(20)
查看>>
一个js验证类
查看>>
CListUI控件的认识
查看>>
通过单元测试理解spring容器以及dubbo+zookeeper单元测试异常处理
查看>>
接口测试自动化框架搭建
查看>>
IDEA如何打包可运行jar的一个问题
查看>>