设计模式——策略模式
来源:互联网 发布:淘宝大学vip课有用么 编辑:程序博客网 时间:2024/06/05 08:05
#策略
策略(cè lüè),意思是计策、谋略。该词语一般是指可以实现目标的方案集合以及根据形势发展而制定的行动方针和斗争方法,也用来表示有斗争艺术,能注意方式方法。
一言以蔽之:方案集合、根据具体情况制定的方案。
#策略模式
策略模式其实是选择策略(方法)的模式。
用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。
这个模式涉及到三个角色:
环境(Context)角色:持有一个Strategy的引用。
抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
#使用场景
假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。一个最简单的情况就是把所有货品的单价乘上数量,但是实际情况肯定比这要复杂。比如,本网站可能对所有的高级会员提供每本20%的促销折扣;对中级会员提供每本10%的促销折扣;对初级会员没有折扣。
根据描述,折扣是根据以下的几个算法中的一个进行的:
算法一:对初级会员没有折扣。
算法二:对中级会员提供10%的促销折扣。
算法三:对高级会员提供20%的促销折扣。
使用策略模式来实现的结构图如下:
#代码讲解传送门
0 0
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式——策略设计模式
- Java设计模式—策略
- 设计模式——策略模式
- 设计模式——策略模式
- 每日设计模式——策略模式
- 设计模式——策略、代理模式
- iOS TableView头视图根据偏移量下拉缩放的效果实现
- VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
- Android中使用Intent传递Object和ArrayList<Object>对象和获取
- ListView实现上拉加载和下拉刷新
- docker使用阿里云镜像仓库
- 设计模式——策略模式
- 中间件漏洞以及防护
- docker 安装及使用 (ubuntu)
- 使用IDEA创建javaweb项目
- 中间件服务器架构:Keepalived+HaProxy+Thrift
- Codeforces Round #334 (Div. 2) D(数论 循环节)
- [LeetCode] 127. Word Ladder
- 项目中hibernate的联合主键用法
- NOIP做题记录(提高组)