郑保乐的博客

James' Blog


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

设计模式学习笔记(19)访问者

发表于 2018-06-05 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,677 字 | 阅读时长 ≈ 7 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

在访问者(Visitor)模式中,客户通过一个访问者类,将对于一个数据结构的不同元素的访问方法封装起来,这样,对一类元素的访问方法可以通过在访问者中修改逻辑而实现,这种类型的设计模式属于行为型模式。

如果对一个数据结构的访问欲获得的结果,需要该结构内部属性经过一系列计算才能得到,那么一般情况下,我们会将计算过程写到数据结构中,用一个统一的接口约束数据结构的计算方法,保证都能获得一致的结构。但是如果有新的计算功能需求,就要对数据结构类进行修改,显然,这不符合开闭原则。所以我们可以将对不同数据结构中的属性的计算方法抽象到一个访问者类中。这样,当需要修改算法的时候只需修改访问者中的具体逻辑就可以了,一定程度上将数据结构和算法分离开来了。

阅读全文 »

设计模式学习笔记(18)模板方法

发表于 2018-06-05 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,315 字 | 阅读时长 ≈ 5 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

模板方法(Template Method) 模式是行为型模式的一种,通常的实现途径是定义一个模板抽象类,将需要具体实现的方法定义为抽象方法,由模板类的子类来重载实现。

所谓模板,就是事先定义好的,为了实现某个功能而专门定义的框架,它对其中的每个组成部分进行了规范。现实生活中,有许多和模板方法相似的例子,比如到银行办理业务要填写各种表格,表格的内容都是事先定义好的,客户只需按要求如实填写,经过工作人员的处理后就能办理相关的业务。这里的表格就是一种模板,需要用户填写的内容就是模板中的方法,业务的实现由用户填写的内容决定。

使用模板的好处是可以规范功能实现的整体模式,使功能的进一步实现变得很容易,所有模板的实现类都会按照模板的约束来实现具体的功能。

阅读全文 »

设计模式学习笔记(17)策略

发表于 2018-06-04 | 分类于 设计模式 | | 阅读次数:
字数统计: 845 字 | 阅读时长 ≈ 3 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

在策略(Strategy Pattern)模式中,一个类的行为或某个接口的实现方法可以在运行时进行更换,通常这种类型的设计模式属于行为型模式。

在策略模式中,我们通常的做法是创建一个对象来封装各种策略,创建一个上下文对象,策略对象作为上下文对象的子对象被调用,通过策略对象的改变就可以实现上下文对象在不同策略下的具体功能。现实生活中就有策略模式的例子,比如用不同的方式出行,乘坐不同的交通工具就是应用了不同的策略。

阅读全文 »

设计模式学习笔记(16)状态

发表于 2018-05-20 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,148 字 | 阅读时长 ≈ 5 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

状态模式(State)最明显的特点是可以使类的行为根据不同的状态变化而变化,很明显,这是一种行为型模式。通常用一个上下文对象将某个类的对象进行一层包裹,将该类在不同状态下的具体行为分别交给不同状态的上下文类来实现。该模式的完美的将类的行为和它的状态进行了解耦,如果某个类增添一种状态,只需要增加新的状态类就可以了。

阅读全文 »

设计模式学习笔记(15)观察者

发表于 2018-05-17 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,150 字 | 阅读时长 ≈ 5 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

观察者(Observer)模式实现了一种一对多的通信方式,它的核心是由多个对象监听中心对象,中心对象发生某种变化时将这个变化通知给关注它的周边对象,所以,它又被称为 “订阅-发送” 模式。

在现实生活中也有许多和观察者模式的运作方式相似的例子,比如当我们订阅某个公众号后,一旦该公众号的主人发不了新的文章或消息,所有订阅这个公众号的用户都会受到这个消息。这些用户就对应着观察者模式里的订阅者,公众号对应着发布者,一旦订阅者对关注点失去了兴趣,就会取消对发布者的订阅,也就不会再受到发布者的任何消息了。所以,实现观察者模式的主要方法就是订阅和发布。

阅读全文 »

设计模式学习笔记(14)备忘录

发表于 2018-05-14 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,245 字 | 阅读时长 ≈ 6 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

备忘录模式(Memento),别名为快照模式(Snapshot),是的行为型模式的一种。它的主要特点是创建一个特殊对象用于保存其他若干个对象在某一刻的状态,以便在需要获得该状态的时候能够及时恢复。

阅读全文 »

设计模式学习笔记(13)中介者

发表于 2018-05-13 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,124 字 | 阅读时长 ≈ 5 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

中介者(Mediator)模式是用来降低多个对象和类之间的通信复杂性的。这种模式中通常提供一个充当中介者角色的类,用来承担“中心化”或“集中化”的职能,与各个对象之间都可以分别相互通信,它的一大优势是减少或避免其他对象之间的互相通信,在通信方面降低了耦合度。

阅读全文 »

设计模式学习笔记(12)迭代器

发表于 2018-05-09 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,512 字 | 阅读时长 ≈ 6 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

迭代器(Iterator)模式又称游标模式,是集合类型对外提供统一的顺序访问元素而隐藏内部的实现细节的一种方式,是一种行为模式。

阅读全文 »

设计模式学习笔记(11)解释器

发表于 2018-05-01 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,621 字 | 阅读时长 ≈ 7 分钟
本文实例代码:https://github.com/JamesZBL/java_design_patterns 解释器(Interpreter)模式提供了校验语言的语法或表达式的途径,它属于行为型模式的一种。这种模式通常会提供一个表达式接口,通过这个接口可以解释对应特定环境的上下文。 解释器模式在日 ...
阅读全文 »

设计模式学习笔记(10)职责链

发表于 2018-04-26 | 分类于 设计模式 | | 阅读次数:
字数统计: 1,018 字 | 阅读时长 ≈ 4 分钟

本文实例代码:https://github.com/JamesZBL/java_design_patterns

职责链(Chain of Responsibility 亦译作 “责任链”)模式中,行为型模式的一种。它的具体特征是,几乎每个行为的实现者都持有职责链中下一个行为实现者的引用,在一个实现者无法完成指派给它的职责的时候,它就会将这一职责的请求传递给下一个实现者,多个传递关系就构成了一条职责链。

阅读全文 »
12…4
郑保乐

郑保乐

优秀的判断力来自经验,
但经验来自错误的判断。

32 日志
7 分类
31 标签
RSS
友情链接
  • EEE凯飞
  • WinterChen
  • 云邪
  • 州的先生
© 2015 — 2018 郑保乐 | James Zheng | 一共写了: 43.5k字
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4
冀ICP备18000182号
冀公网安备 13010802000830号