策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响客户端的情况下发生变化。 策略模式相当于可插入式的算法。可以使得在保持接口不变的情况下,使具体算法可以互换。 1. 简介 策略模式是对算法的包装,是把使用算法的责任和算法本 ...
分类:
其他好文 时间:
2019-07-24 22:48:47
阅读次数:
178
背景 最近,在使用springboot开发一个接口的时候,需要根据接收的请求事件类型,去执行不同的操作,返回不同的结果,基本逻辑如下: 写完会发现,随着事件的增加,这段代码会很长,每个事件的处理函数也都集中在一个类当中,不好维护。因此,通过搜索学习发现,可以使用Springboot的注解+策略模式+ ...
分类:
编程语言 时间:
2019-07-24 15:07:16
阅读次数:
272
前言 在春招秋招之时,因为面试中会问到大量的设计模式。所以有去看一些关于设计模式的书籍,博客,等等。比如秦小波老师写的《设计模式之禅》。但当时仅限于看,包括现在也仅限于看。有的时候项目中,你都不知道有没有运用到了设计模式。也许用到了单例模式,但你并不知道如何用的,不知不觉就用到了。 当时并不知道设计 ...
分类:
其他好文 时间:
2019-07-14 17:54:32
阅读次数:
92
PHP策略模式 1、什么是策略模式? 定义:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,并让它们可以相互替换,这种模式就是策略模式。 简单理解就是 有n个做法供你选择,根据你的需要选择某个策略得到结果 2、为什么要用策略模式? 使用设计模式之后,我们的代码冗余和耦合度变低,每个策略模 ...
分类:
Web程序 时间:
2019-07-14 15:15:38
阅读次数:
135
本文来讲解一下两个结构比较相似的行为设计模式:策略模式和状态模式。两者单独的理解和学习都是比较直观简单的,但是实际使用的时候却并不好实践,算是易学难用的设计模式吧。这也是把两者放在一起介绍的原因,经过对比和实例介绍,相信应该会一些比较深刻的感知。最后在结合个人的体会简单聊一下对这两个模式的一些看法。 ...
分类:
其他好文 时间:
2019-07-03 22:57:50
阅读次数:
223
1.首先定义接口,所有的策略都是基于一套标准,这样策略(类)才有可替换性。声明一个计算策略接口 2.接着两个接口实现类。复习golang语言实现接口是非侵入式设计。 3.声明一个策略类。复习golang中规定首字母大写是public,小写是private。如果A,B改为小写a,b,在客户端调用时会报 ...
分类:
编程语言 时间:
2019-07-02 19:26:54
阅读次数:
119
一、总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模 ...
分类:
其他好文 时间:
2019-06-27 14:59:29
阅读次数:
135
这是一个在书上看到的例子,在这里简单记录一下。 1.需求 一个销售书籍的系统,实现:每种书的折扣不一样,教材类的8折,小说类7折,生活类5折,其他的没有折扣。 2.容易想到的解决方法 通常我们会写一个方法计算每种书的价格,代码如下: 3.使用策略模式实现 简单理解: 策略模式就是就是为了解决上面这种 ...
分类:
其他好文 时间:
2019-06-25 16:47:36
阅读次数:
99
策略模式指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。 策略模式定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。 将不变的部分和变化的部分隔开是每个设计模式的主题。策略模式的目的就是将算法的实现和算法的使用分离开来。 策略模式包含三个角色: Context:环境类 Str ...
分类:
其他好文 时间:
2019-06-23 20:52:14
阅读次数:
105
通过if-else 来实现拦截器的封装 首先,说一下上面拦截器封装的逻辑,当状态码为1000的时候,请求数据成功,当状态码为435001, 435011, 436050的时候,退出登录。其他状态码的时候,返回错误信息。 在最开始封装拦截器的时候,使用了大量的if-else的。在可读性上是不太 友好的 ...
分类:
其他好文 时间:
2019-06-22 19:50:50
阅读次数:
100