Java代理模式

1. 代理模式

代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。

代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。

举个例子:你找了小红来帮你问话,小红就可以看作是代理你的代理对象,代理的行为(方法)是问话。

Understanding the Proxy Design Pattern | by Mithun Sasidharan | Medium

阅读更多

中介者模式

用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互.

Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.

1.适用场景

中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出现了蜘蛛网状结构。

阅读更多

享元模式

一、前言

享元模式解决的问题是:共享对象

享元模式(FlyweightPattern)是池技术的重要实现方式

二、基本概念

1.定义

使用共享对象可有效地支持大量的细粒度的对象

阅读更多

解释器模式

一、前言

解释器模式解决的问题是:语法分析

解释器模式(InterpreterPattern)是一种按照规定语法进行解析的方案,在现在项目中使用较少.

二、基本概念

1.定义

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

阅读更多

状态模式

一、前言

状态模式解决的问题是:状态变更引起行为变更

二、基本概念

1.定义

当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。

Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.

阅读更多

访问者模式

一、前言

访问者模式解决的问题是:功能集中化

二、基本概念

1.定义

封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.

阅读更多

备忘录模式

一、前言

备忘录模式解决的问题是:游戏存档

通俗地说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法。(备份与恢复)

二、基本概念

1.定义

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。(即备份恢复)

阅读更多

门面模式

一、前言

门面解决的问题是:统一访问

门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式

二、基本概念

1.定义

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。

阅读更多

组合模式

一、前言

组合模式解决的问题是:树形结构(部分与整体的层次结构)

组合模式(Composite Pattern)也叫合成模式,有时又叫做部分-整体模式(Part-Whole),主要是用来描述部分与整体的关系,

二、基本概念

1.定义

将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

阅读更多

命令模式

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

Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

1.适用场景

只要你认为是命令的地方就可以采用命令模式

阅读更多