-
设计模式学习笔记
收藏设计模式学习记录分析给大家~~~~
最近更新文章
设计模式汇总
JAVA设计模式学习1——统一建模语言UML
JAVA设计模式学习2——面向对象设计原则
JAVA设计模式学习3——设计模式概述
JAVA设计模式学习4——简单工厂模式
JAVA设计模式学习5——工厂方法模式
JAVA设计模式学习6——抽象工厂模式
JAVA设计模式学习7——单例模式
JAVA设计模式学习8——建造模式
JAVA设计模式学习9——原型模式
JAVA设计模式学习10 ...
JAVA设计模式学习25——迭代器模式
迭代器 (Iterator)模式:迭代器模式提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。
迭代器模式由以下角色组成:
迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。
具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置。
容器角色(Container):容器角色负责提供创建具体 ...
JAVA设计模式学习24——访问者模式
访问者(Visitor)模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。访问者模式的结构图如下:
通过上图可以看到他有如下角色:
抽象访问者(Visitor)角色:定义接口,声明一个或多个访问操作。 具体访问者(ConcreteVisitor)角色:实现抽象访问者所声明的接口,也就是抽象访问者所声明的各个访问操作。 抽象元 ...
JAVA设计模式学习23——状态模式
状态(state)模式:状态模式的意图是,允许一个对象在其内部状改变时改变它的行为。看起来就像是改变了它的类一样。主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。
状态模式的结构如下图:
从图中可以看出状态模式有以下角色:
1、抽象状态(State)角色:定义一个接口,用以封装环境对象的一 ...
JAVA设计模式学习22——备忘录模式
备忘录(Memento)模式:又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
备忘录模式有如下结构图:
备忘录模式涉及角色如下:
发起人(Originator):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态, ...
JAVA设计模式学习21——命令模式
命令(Command)模式:又称Action模式或者Transaction模式。它属于对象的行为模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和撤销功能。
GoF命令模式结构图如下:
命令模式是有以下角色:
抽象命令(Command)角色:声明执行操作的接口。
具体命令(Conc ...
JAVA设计模式学习20——责任链模式
责任链(Chain of Responsibility)模式:责任链模式是对象的行为模式。使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系。 ...
JAVA设计模式学习19——观察者模式
观察者(Observer)模式:是对象的行为模式,又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听(Source/Listener)模式或者从 ...
JAVA设计模式学习18——模版方法模式
模版方法(Template Method)模式:属于类的行为模式,它的用意是定义一个操作中的算法的骨架,将一些操作延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
模版方法模式的类图如下:
模版方法模式有两个角色:
1、抽象模版(Abstract Template)角色:定义了一个或多个抽象操作,同时定义了一个模版方法,它是一个具体的方法,作为抽象 ...
JAVA设计模式学习17——策略模式
策略(Strategy)模式:又名Policy,它的用意是定义一组算法,把它们一个个封装起来,并且使他们可以相互替换。策略模式可以独立于使用他们的客户 ...
JAVA设计模式学习16——桥梁模式
桥梁(Bridge)模式:又称Handle/Body。将抽象部分和实现部分分离,使它们都可以独立的变化。桥梁模式属于对象的结构模式。
GOF桥梁模式的示意性结构类图如下:
通过上图可以看出桥梁模式有以下角色:
抽象化(Abstraction)角色:给出抽象化定义并持有一个实现化对象的引用。
修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化 ...
JAVA设计模式学习15——门面模式
门面(Facade)模式(也叫外观模式),为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易 ...
JAVA设计模式学习14——享元模式
享元(Flyweight)模式:通过共享技术以便有效的支持大量细粒度的对象。
享元模式在阎宏的《java与模式》中分为单纯享元模式和复合享元模式,复合模式的复合享元是不可以共享的,享元对象能做到共享的关键是区分内蕴态(Internal State)和外蕴态( External State)。这两个“蕴态”翻译的太难懂,我不是说翻译的不好,可能是我理解能力差,还是《Design Pattern ...
JAVA设计模式学习13——代理模式
代理(proxy)模式:指目标对象给定代理对象,并由代理对象代替真实对象控制客户端对真实对象的访问。
代理模式模式有以下角色:
抽象主题(subject)角色:声明真实主题和代理主题的共同接口。
真实主题(real subject)角色:定义代理对象需要代理的真实对象。
代理主题(proxy subject)角色:代替真实对象来控制对真实对象的访问,代理对象持有真实对象的应用,从而可以随 ...
JAVA设计模式学习12——装饰器模式
装饰(Decorator)模式属于设计模式里的结构模式,通过装饰类动态的给一个对象添加一些额外的职责。装饰模式也叫包装(wrapper)模式。装饰模式有如下的角色:
抽象构件(component)角色:这个角色用来规范被装饰的对象,一般用接口方式给出。
具体构件(concrete component)角色:被装饰的类。
装饰(decorator)角色:持有一个构件对象的实例。并定义一个跟抽 ...
JAVA设计模式学习11——适配器模式
适配器(adapter)模式,把一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
适配 ...
JAVA设计模式学习10——组合模式
这节开始学习结构模式,结构模式包括:组合模式、门面模式、适配器模式、代理模式、装饰模式、桥模式、享元模式。从组合模式开始学习。
组合模 ...
JAVA设计模式学习9——原型模式
原型模式(prototype)它是指通过给定一个原型对象来指明所要创建的对象类型,然后复制这个原型对象的办法创建出同类型的对象。原型模式也属于创建模式。
我们先来看一下原型模式的模型:
原型模型涉及到三个角色:
客户角色(client):客户端提出创建对象的请求;
抽象原型(prototype):这个往往由接口或者抽象类来担任,给出具体原型类的接口;
具体原型(Concrete p ...
JAVA设计模式学习8——建造模式
建造模式(Builder)是对象的创建模式,建造模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以是建造过程生成具有不同内部表象的产品对象。一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,通常我们称作内部表象,不同的产品可以有不同的内部表象,也就是不同的零件。使用建造模式可以使客户端不需要知道所生成的产品有那些零件,每个产品对应的零件彼此有何不同,是 ...
JAVA设计模式学习7——单例模式
设计模式的创建模式中前面说了工厂模式,这里我们继续来讨论设计模式中另一个创建模式—单例模式。单例模式(Singleton)是指确保一个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例。这个类我们也称它为单例类。单例模式的使用在现实世界里很多,比如我们常见的打印机打印的作业队列,一个没打印完,那么只有在队列等待;windows回收站,windows视窗里回收站有且只有一个实例。单例模式的 ...