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

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

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

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

继续阅读“设计模式学习笔记(15)观察者”

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

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

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

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

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

解释器(Interpreter)模式提供了校验语言的语法或表达式的途径,它属于行为型模式的一种。这种模式通常会提供一个表达式接口,通过这个接口可以解释对应特定环境的上下文。

解释器模式在日常开发的过程中不是很常用,但它在 SQL 解析、符号处理引擎、编译程序等场景中使用非常广泛。
继续阅读“设计模式学习笔记(11)解释器”

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

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

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

继续阅读“设计模式学习笔记(10)职责链”

设计模式学习笔记(9)命令

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

命令(Command)模式是一种数据驱动的设计模式,它属于行为型模式。请求被包装成一个命令对象,并由调用者传递给被调用对象。被调用对象寻找可以处理该命令的合适的处理对象,并把该命令传给这个处理对象,该处理对象执行命令。

命令模式中,命令的发出者和接收者是独立的,发出命令的职责和处理命令的职责被分别指派给不同的对象。命令模式解决了一般的调用过程中,“行为请求者”与“行为实现者” 之间的强耦合关系。比如某些场合中,需要对命令进行“撤销”、“重做”,亦或其他不得不以 “事务” 的形式实现的场合,命令发出者和命令实现者之间的解耦就显得至关重要了。

继续阅读“设计模式学习笔记(9)命令”

设计模式学习笔记(8)单例

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

单例(Singleton)模式是最常用的设计模式之一,但同时也是最能体现 Java 特性的设计模式之一,它是创建型模式中最经典的一个。

单例模式的核心目的是,保证一个类的实例只存在一个。许多场景中整个软件系统只需要拥有一个该类的全局对象,这是为了更好的实现这个对象的功能。一个常见的场景,服务器应用程序中,某些配置通常放在若干个文件中,某个类的一个单例对象将配置读取进来,以后每次需要获取配置信息只需要通过单例模式的风格获取这个对象,就能得到这些配置数据了。相反,如果每次需要获取配置信息都要 new 一个该类的对象并读取配置文件,那将造成许多本可以避免的性能开销。

继续阅读“设计模式学习笔记(8)单例”

设计模式学习笔记(7)原型

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

原型(Prototype)模式用于创建重复的对象,与工厂模式类似。它们之间的区别是:工厂模式通过 new 关键字调用类的构造方法来创建对象,而原型模式采用复制已存在对象的方式创建新的对象。如果通过构造方法创建对象会造成一定程度上的性能问题,就应当考虑使用原型模式。例如,一个对象需在创建时需要进行读数据库的操作,并且这个对象需要被频繁的创建,那么就应当采用缓存的方式,在数据不更新的前提下,尽可能的使用缓存,也就是克隆的对象。

继续阅读“设计模式学习笔记(7)原型”

设计模式学习笔记(6)工厂方法

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

工厂方法(Factory Method)模式,又叫做虚拟构造(Virtual Constructor)模式或多态工厂(Polymorphic Factory)模式。工厂方法的特点是定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 工厂方法使一个类的实例化延迟到其子类。

继续阅读“设计模式学习笔记(6)工厂方法”