设计模式学习笔记(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)工厂方法”

设计模式学习笔记(5)抽象工厂

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

抽象工厂模式是在工厂方法模式之上的有一次升级,以便能够处理更加复杂的对象创建场景。因此也是所有形态的工厂模式中最为抽象和最具一般性的一种形态。工厂 ( Factory ) 和产品 ( Product ) 是 Abstract Factory 模式的主要参与者。 该模式描述了怎样在不直接实例化类的情况下创建一系列相关的产品对象。 它最适用于产品对象的数目和种类不变, 而具体产品系列之间存在不同的情况。 我们通过实例化一个特定的具体工厂对象来选择产品系列, 并且以后一直使用该工厂生产产品对象。 我们也能够通过用一个不同的具体工厂实例来替换原来的工厂对象以改变整个产品系列。 抽象工厂模式对产品系列的强调使它区别于其他只与一种产品对象有关的创建性模式。

继续阅读“设计模式学习笔记(5)抽象工厂”

设计模式学习笔记(4)构建者

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

构建者(Builder)模式通常用于将复杂对象的构造简化,将具体的构造过程与表示分离,使同样的构建过程可以创建不同的表示。使用多个简单的对象一步一步构建成一个复杂的对象,这种类型的设计模式属于创建型模式。建造模式可以将一个复杂对象的内部组成部分,与该对象本身的创建分离开来,从而使得复杂对象的组装更灵活。
继续阅读“设计模式学习笔记(4)构建者”