每日一设计模式之策略模式
来源:互联网 发布:搜索引擎优化wtg168 编辑:程序博客网 时间:2024/06/09 21:09
策略模式
研究angularjs源码时候发现provider是策略模式和工程模式的混合,但是策略模式印象不是很深刻了,再翻出来看看写写吧。有爱看源码的小伙伴可以一起交流啊。
概念
定义一系列算法,把他们一个一个封装起来,并且使他们可以相互替换(具有相同的目标和意图)接口与实现分离
优点:
1. 策略模式利用组合、委托和多态等技术和思想,可以有效地避免多重条件选择语句
2. 策略模式提供了对开放-封闭原则的完美支持,将算法封装在独立的 strategy 中,使得它们易于切换,易于理解,易于扩展
缺点:
1. 会在程序中增加许多策略类或者策略对象,但实际上比把他们负责的逻辑堆砌在 Context 中要好
2. 使用策略模式,必须了解所有的策略,才能更好的选择一个合适的策略
来个例子
光说这些感觉有点懵逼,身为一个社会主义接班人怎么能直说空话呢,来个小demo初步理解一下:
nameInput.isValidate = { noNull:true, maxLength: 32}//要是有许多类似的验证,那不是要写很多次吗,这个时候就用到了策略模式validateList = { notNull: function(val){ return !!val; }, maxLength: function(value, max){ return value.length() > max; }}//这样只需要调用validteList这个策略就可以了,可以实现策略内部算法的随意切换,同时当需要修改某个条件的时候只需要在算法内部修改,调用的地方会直接生效,相当方便,类似angularjs的服务了,当然其实服务就是策略模式和工程模式的混合。
简单mark一下概念,接下来还会写jQuery表单封装用到的策略模式,加油,一起努力学习。
阅读全文
0 0
- 每日一设计模式之策略模式
- 每日一记之策略模式
- 【每日一记】设计模式——策略模式
- 每日一得--java设计模式之(策略模式)
- 每日一得--java设计模式之策略模式
- 设计模式一之策略模式(strategy)
- 设计模式之策略模式(一)
- 设计模式一之策略模式
- 设计模式(一)之策略模式
- 设计模式一之策略模式
- 设计模式之策略模式 一
- 每日设计模式——策略模式
- 设计模式一 策略模式
- 设计模式(一) 策略模式
- 设计模式一:策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- RMI和RPC之间最主要的区别在于方法的调用的方式
- lnmp环境下TP3.2.3出现404错误解决办法
- 《采莲赋》
- HDU-1176
- Apache常见功能实战详解
- 每日一设计模式之策略模式
- 吸血鬼数字--Java实现探究
- Spring Boot快速入门(Hello World)
- Volatile并发理解
- 用Python爬取淘宝商品
- Android方法数超出限定的解决方案
- Android—数据存储(二)
- stm8s开发(七) SPI的使用:SPI主机通信!
- 浅谈Java分布式计算