美文网首页
设计模式学习(三)

设计模式学习(三)

作者: 其实都没有_8881 | 来源:发表于2019-03-21 14:29 被阅读0次

行为模式:用于方法实现以及对应算法的设计模式。

1.策略模式

定义:为了让客户类能够更好地使用某些算法而不需要知道其具体的实现

特点:有一个策略工厂,实际调用由其控制

使用场景:有多种计算方式,或选择方式(如用户选择用哪种支付方式)

策略模式代码

2.模板方法模式

定义:准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑

特点:为了防止恶意的操作,一般模板方法都加上final关键字,不允许被覆写/具体的执行顺序和实现由子类自己控制

使用场景:php中的钩子由运用到

模版方法模式代码

3.观察者模式

定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

特点:低耦合,非侵入式的通知与更新机制

使用场景:某些功能实现后再执行某个功能(如,用户注册成功后给积分,优惠卷等/某些业务逻辑完成后需要记录在log里)

观察者模式代码

4.迭代器模式

定义:又叫做游标(Cursor)模式。提供一种方法访问一个容器(Container)对象中各个元素,而又不需暴露该对象的内部细节。

特点:继承 Iterator

使用场景:最经典的例子是foreach

迭代器模式代码一 迭代器模式代码二

5.责任链模式

定义:控制链模式。它主要由一系列对于某些命令的处理器构成,每个查询会在处理器构成的责任链中传递,在每个交汇点由处理器判断是否需要对它们进行响应与处理。

特点:一定有一个上级,只有最大权限不需要上级

使用场景:权限控制

责任链模式代码

6.命令模式

定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或记录请求日志,可以提供命令的撤销和恢复功能

特点:Receive接收者角色:该角色就是干活的角色,命令传递到这里是应该被执行的/Command命令角色:需要执行的所有命令都在这里声明/Invoker调用者角色:接收到命令,并执行命令

使用场景:看这里

命令模式代码

7.备忘录模式

定义:又叫做快照模式(Snapshot)或 Token 模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在合适的时候将该对象恢复到原先保存的状态

备忘录模式中的角色

使用场景:最经典的就是编辑器的control + z 恢复功能

备忘录模式代码一 备忘录模式代码二

8.状态模式

定义: 允许一个对象在其内部状态改变时改变它的行为

状态模式角色

使用场景:多用于层级较多的判断(如电商项目中用户等级判断)

状态模式代码

9.访问者模式

定义:访问者表示一个作用于某对象结构中各元素的操作

特点:先将访问者传入元素对象的Accept方法中,然后元素对象再将自己传入访问者,之后访问者执行元素的相应方法

使用场景:方法扩展(如下面的代码,如果我需要再添加一个乘法,只需要添加一个visitordiv)

访问者模式代码一 访问者模式代码二

10.中介者模式

定义:两个对象想要交互,但是两者自己不去直接发生交互,而是通过中介者将两者的进行交互

使用场景:QQ游戏平台,聊天室、QQ群、短信平台和房产中介

中介者模式代码

11.解释器模式

定义:给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子

解释器模式角色 解释器模式使用场景 解释器模式代码

主要参考文档:点这里,侵权删

总结:不管是什么模式,主要的感觉就是类与类之间的操作,都是为了开发出低耦合高扩展性能的代码(一般会从抽象类或是接口入手)

相关文章

  • 设计模式学习(三)

    行为模式:用于方法实现以及对应算法的设计模式。 1.策略模式 定义:为了让客户类能够更好地使用某些算法而不需要知道...

  • 装饰者模式——IO流运用

    推荐博客Java设计模式学习09Java设计模式学习09Java设计模式学习09 装饰者模式还是比较难懂的。。。。...

  • 设计模式之单例模式

    单例设计模式全解析 在学习设计模式时,单例设计模式应该是学习的第一个设计模式,单例设计模式也是“公认”最简单的设计...

  • 设计模式解析一 工厂模式的不同

    设计模式解析一 工厂模式的不同 设计模式解析二 结构模式三剑客 设计模式解析三 行为模式三剑客 设计模式解析四 模...

  • 设计模式解析二 结构模式三剑客

    设计模式解析一 工厂模式的不同 设计模式解析二 结构模式三剑客 设计模式解析三 行为模式三剑客 设计模式解析四 模...

  • 设计模式解析六 单例模式

    设计模式解析一 工厂模式的不同 设计模式解析二 结构模式三剑客 设计模式解析三 行为模式三剑客 设计模式解析四 模...

  • 设计模式解析三 行为模式三剑客

    设计模式解析一 工厂模式的不同 设计模式解析二 结构模式三剑客 设计模式解析三 行为模式三剑客 设计模式解析四 模...

  • 设计模式解析五 观察者模式和桥接模式

    设计模式解析一 工厂模式的不同 设计模式解析二 结构模式三剑客 设计模式解析三 行为模式三剑客 设计模式解析四 模...

  • 设计模式解析四 模板方法模式和外观模式

    设计模式解析一 工厂模式的不同 设计模式解析二 结构模式三剑客 设计模式解析三 行为模式三剑客 设计模式解析四 模...

  • 设计模式之前话一

    在进入具体的设计模式之前,我们有必要知道,设计模式是什么?为什么要学习设计模式?怎么学习设计模式?只有了解了这些问...

网友评论

      本文标题:设计模式学习(三)

      本文链接:https://www.haomeiwen.com/subject/cqwamqtx.html