设计模式学习01-策略模式
定义
The Strategy pattern
The strategy pattern defines a family of algorithms encapsulate each one, and makes them interchangeable. Strategy lets algorithm vary independently from clients that use it.
策略模式
策略模式定义了一系列的算法,分别封起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.
说明
简单的来说,对于一个接口,有多种实现。这些实现可以自由替换,不会影响其它客户的调用.
图示
列举的是游泳的例子,游泳有好几种游法,一个人在游泳时可以蝶泳,蛙泳,仰泳等等,所以将游泳这个行为抽成一个接口,下面依次蝶泳,蛙泳,仰泳的实现。而Person类直接引用游泳接口,可以在运行时通过设置swimable来动态的改变游泳的方式。
总结
策略模式是一个提倡“针对接口编程”的模式,而使用接口的目的是为了统一标准或着说是制定一种强行的规定。
策略模式的使用是由用户发起的,根据用户的操作决定使用什么具体的策略角色。策略模式仅仅封装算法,提供新的算法加入到已有系统和算法间的相互替换.
转载于:https://www.cnblogs.com/51cto/archive/2009/03/16/1413303.html
设计模式学习01-策略模式相关推荐
- 设计模式学习01策略模式记录
(个人记录)策略模式带来的好处就是更加的有弹性,可以很方便的动态改变对象的行为,在已经固定的项目中如果要增加新的类型,在项目中我们要分析变化部分与不变部分. 将变化的部分(也就是策略算法)使用接口的方 ...
- 设计模式学习:策略模式
策略模式简介 策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现.策略模式最大的特点是行为的变化,行为之间可以相互替换.每个if判断都可以理解为就是 ...
- 设计模式学习之策略模式(Strategy,行为型模式)(13)
转载地址:http://www.cnblogs.com/zhili/p/StragetyPattern.html 一.引言 本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方 ...
- [设计模式学习笔记] -- 策略模式
策略模式 定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 举一个简单的例子来描述策略模式. 设计一款冷兵器时代士兵打仗的游戏,游戏内部设计要使用OO技术. ...
- Java-马士兵设计模式学习笔记-策略模式-模拟Comparable接口
一.情况 1.目标:要在专门用于排序数据的DataSorter.java中实现对所有A类,B类,C类,D类等等的排序 2.初步想法:DataSorter.java的代码如下 public class ...
- Java设计模式学习 - 模版方法模式策略模式
个人博客项目地址 希望各位帮忙点个star,给我加个小星星✨ 设计模式-模板方法&策略模式 简单介绍 模板方法模式(Template):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. ...
- 设计模式学习笔记——策略(Strategy)模式
设计模式学习笔记--策略(Strategy)模式 @(设计模式)[设计模式, 策略模式, Stategy] 设计模式学习笔记策略Strategy模式 基本介绍 策略案例 类图 实现代码 Hand类 S ...
- No2.大话设计模式学习之策略、装饰、代理模式
No2.大话设计模式学习之策略.装饰.代理模式 2.设计模式-part1 2.1.策略模式 描述:策略模式(Strategy Pattern)指同系列算法家族,内部都遵从算法家族的接口及方法规范 原则 ...
- 设计模式入门(策略模式)
[0]README 0.1)本文部分文字描述转自 "head first 设计模式",旨在学习 设计模式入门(策略模式) 的基础知识: 0.2)本文章节4和5的source cod ...
- 设计模式 - 学习笔记 - 工厂模式Factory Pattern
设计模式 - 学习笔记 - 工厂模式Factory Pattern 1. 简单工厂 1.1 应用场景 1.2 UML 1.3 优劣分析 好处 缺点 1.4 代码示例 抽象产品 AbstractProd ...
最新文章
- “学了半年后,我要揭开Python 3宗罪!”
- Spring Boot 参考指南(使用NoSQL技术)
- 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置...
- window中常用的命令
- material mem
- The first curriculum design experiment report in spring 2019
- mysql扩展使用_mysql的扩展应用
- 企业shell面试题:获取51CTO博客列表按时间倒序排序
- 教你开发jQuery插件(转)
- 前端学习(537):多列布局4横跨多列
- 【EMNLP 2020】篇章要素识别和篇章结构评分(上)
- 实施工程师是干嘛的_CTO大怒:300万建设数据中台,啥也没看见,我要它干嘛?...
- 运维中常用Linux命令及运维工具
- 软通动力:致力智慧城市与大数据协同发展
- 雷电2接口_Steinberg 发布旗舰级 32 bit / 384 kHz 雷电 2 音频接口 AXR4
- 项目jar包启动的命令
- 服务器信号满格但网速很慢,信号满格网速太慢是什么原因,网速慢是什么原因-...
- 统帅转型:轻时尚时代挺进年轻领地
- 在Chrome、Firefox、IE、360等多种浏览器中实现二代证阅读功能
- 通俗易懂的epoll