
设计模式
文章平均质量分 86
JAVA小镇V
不会前端的Java不是好程序猿!
技术公众号:Java小镇V
在职JAVA,走在全栈的路上
展开
-
设计模式之装饰者模式
模式定义装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。 装饰者模式能够完美实现“对修改关闭,对扩展开放”...转载 2018-06-30 19:58:00 · 181 阅读 · 0 评论 -
设计模式之职责链模式
定义职责链( Chain of Responsibility )模式也被叫做责任链模式,在《设计模式》属于行为型模式,是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。责任链模式将请求和处理分离开来,进行解耦。UML类图具体角色1、抽象处理者( Handler )角色:定义一个...原创 2018-08-06 10:19:11 · 201 阅读 · 0 评论 -
设计模式之蝇量(享元)模式
定义通过共享的方式高效地支持大量细粒度的对象。例子景观设计软件项目:现在有一个设计景观展示的项目,项目内部已经有的对象有树,树的属性有年龄,x、y的坐标。现在要表示成一个森林,则需要通过大量的树模拟成森林每一颗树的属性和方法都是相同的,只是值不同传统方法就是定义大量的树对象,当成森林使用时则循环遍历每一颗树的内部方法就行。/** * 传统模式,树的对象,包含树的x,y坐标...转载 2018-08-06 11:33:23 · 236 阅读 · 0 评论 -
设计模式之代理模式
定义代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。举个例子码农不直接和客户沟通,而是通过产品经理来传达客户的需求,这时,产品经理就相当于一个代理了,让我们通过代码来看看。静态代理基于面向对象的思想,首先定义一个码农接口,它有一个实现用户需求的方法。public interface ICoder { public void implDemand...原创 2018-08-01 17:24:27 · 145 阅读 · 0 评论 -
设计模式之复合模式
定义在形式上,复合模式确实是多个模式的组合,但满足了这一条并不一定是复合模式,注意它的定义:将多个模式结合起来形成一个“框架”,以解决一般性问题。一提到“框架”,可能最容易联想到的就是MVC吧,不过MVC确实是一个经典的复合模式。MVC里的模式我们熟知的MVC架构就是一个经典的复合模式MVC:Model、View、ControlerModel:是程序主体,代表了业务数据和...原创 2018-08-01 17:34:27 · 221 阅读 · 0 评论 -
设计模式之桥接模式
原文hydraWindy桥接模式定义桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使它们都可以独立地变化。更容易理解的表述是:实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合起来,减少了各维度间的耦合。举例理解手机,不同品牌的手机有着类似的功能,假设现在都具有通讯录和游戏功能。或许我们会这样设计实现这...转载 2018-08-01 18:31:38 · 355 阅读 · 0 评论 -
设计模式之中介者模式
定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 通过中介者模式,我们可以将复杂关系的网状结构变成结构简单的以中介者为核心的星形结构,每个对象不再和它与之关联的对象直接发生相互作用,而是通过中介者对象来另一个对象发生相互作用。UML结构图模式结构Mediator(抽象中介者): 定义了同...原创 2018-08-06 19:02:49 · 195 阅读 · 0 评论 -
设计模式之备忘录模式
原文来自battcn定义备忘录模式(Memento Pattern)属于行为型模式的一种,在不破坏封装特性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。UML类图角色组成Memento(备忘录角色): 负责存储原发器对象的内部状态,但是具体需要存储哪些数据是由原发器对象来决定的,在需要的时候提供原发器...转载 2018-08-07 12:18:26 · 247 阅读 · 0 评论 -
设计模式之原型模式
原文来自battcn定义原型模式(Prototype Pattern)是创建模式的一种,其作用是提高创建效率,减少计算机资源开销,与工厂模式类似的是,都屏蔽了对象实例化的过程…UML类图从上面的UML图可以看出,原型模式涉及到的角色有如下三个:客户端角色:负责创建对象的请求。抽象原型角色:该角色是一个抽象类或者是接口,提供拷贝的方法。具体原型角色:该角色是拷贝的对象,...转载 2018-08-07 17:07:46 · 151 阅读 · 0 评论 -
设计模式之访问者模式
原文定义表示一个作用于其对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。主要解决稳定的数据结构和易变的操作耦合问题。就是把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。其本质是预留通路,回调实现。它的实现主要就是通过预先定义好调用的通路,在被访问的对象上定义accept方法,在访问者的对象上定义visit方法;然后在调...转载 2018-08-08 09:44:42 · 160 阅读 · 0 评论 -
设计模式之组合模式
什么是组合模式组合模式提供了一种层级结构,并允许我们忽略对象与对象集合之间的差别。调用者并不知道手里的东西是一个对象还是一组对象,不过没关系,在组合模式中,调用者本来就不需要知道这些。举个例子假设我们要去描述文件系统,文件系统里有文件和文件夹,文件夹里又有文件夹和文件。。。没错,这是一个层级结构,就像菜单一样,菜单里有菜单项和子菜单,子菜单里有菜单项和子子菜单。。层级结...转载 2018-07-27 17:36:17 · 219 阅读 · 0 评论 -
设计模式之状态模式
定义状态模式状态模式(state pattern):属于对象的行为型模式。又叫状态对象模式(pattern of objects for state);当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变其了类。涉及的角色抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态相关的行为。 环境(Context)角色:维护一个...转载 2018-07-31 15:54:32 · 352 阅读 · 0 评论 -
设计模式之迭代器模式
什么是迭代器模式用迭代器来封装集合对象的遍历细节,使调用者能够通过统一的接口来实现对集合的遍历。迭代器也给集合对象提供了一定的保护,想要遍历集合,直接调用迭代器的方法就好了,我们不知道也不必知道集合内部的数据管理方式。举个例子有这样的一个需求。一家集团公司在北京和上海分别有一家子公司,每家公司内部有自己的部门,且自己提供了打印部门的方法。其中一个子公司以数组来保存部门列表,另外一个...原创 2018-07-27 14:42:22 · 112 阅读 · 0 评论 -
设计模式之观察者模式
实例建立一个关于气象站的应用,该系统由三个部分组成,气象站(获取数据的物理装置)、WeatherData对象和布告板(显示天气状况给用户看)。该应用有以下几个要求: 1.WeatherData类具有getter方法,可以取得三个测量值。 2.当心的测量数据备妥时,measurementsChanged()方法就会被调用(我们不在乎此方法是如何被调用的,我们只在乎它被调用了) 3.我们...原创 2018-06-07 09:55:45 · 238 阅读 · 0 评论 -
设计模式之策略模式
1、定义:定义一系列算法,将每个算法封装到具有公共接口的一系列策略类中,从而使它们可以相互替换,并让算法可以在不影响到客户端的情况下发生变化。 简单来说,就是“准备一组算法,并将每一个算法封装起来,使得它们可以互换”2、模式原理3、实例讲解书中以一个例子来开展策略模式,方便理解。 1:模拟鸭子游戏:游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫,设计一个鸭子...原创 2018-06-04 17:12:19 · 192 阅读 · 0 评论 -
设计模式之单例模式
什么是设计模式设计模式简单来说就是工程师们经过长期编程,总结的一套固定的编程模式,就像盖房子,本来是随便盖的,但是经过长期实践,建筑者们形成了一套建筑的固定套路,比如哥特式建筑怎么建,四合院怎么建等等。 对应到程序员的软件工程行业,我们其实也是在建造“屋子”,这套设计模式就是我们编程的基本思路。 设计模式有很多种,这里介绍其中最简单也最常用的单例模式。 单例模式即,单例对象的类必须...原创 2018-06-01 16:24:30 · 163 阅读 · 0 评论 -
设计模式之工厂模式
原作者:hollischuang http://www.hollischuang.com/archives/1420定义工厂模式从简到繁共分成简单工厂模式(也叫静态工厂模式),工厂方法模式(也叫多态工厂模式),抽象工厂模式。简单工厂模式1、定义简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工...转载 2018-07-03 16:36:13 · 211 阅读 · 0 评论 -
设计模式之适配器模式
定义适配器大家都不陌生,每个国家规定的标准电压不同,在我国生产的电脑如何能在美国充电使用,答案是使用适配器,即引入一个电源适配器。在软件开发中,有时也存在类似这种不兼容的情况,我们也可以像引入一个电源适配器一样引入一个称之为适配器的角色来协调这些存在不兼容的结构,这种设计方案即为适配器模式。适用场景1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个可以...原创 2018-07-17 15:08:46 · 123 阅读 · 0 评论 -
设计模式之外观模式
定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易地使用。类图实现,外观模式涉及到的角色外观(Facade)角色:客户端直接调用这个角色的方法,该角色知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。子系统(SubSystem)角色:子系统角色集合实现子系统的功能,处理 Facade 对象指派的任务。...原创 2018-07-17 17:35:03 · 150 阅读 · 0 评论 -
设计模式之命令模式
概述命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户 进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象 行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发 送请求的对象只需要知道如何发送请求...原创 2018-07-11 18:19:09 · 356 阅读 · 0 评论 -
设计模式之模板方法模式
定义模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。UML类图这里涉及到两个角色:抽象模板(Abstract Template),具体模板(Concrete Template)。抽象模板有如下责任: 定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级...原创 2018-07-25 18:11:59 · 146 阅读 · 0 评论 -
设计模式之生成器模式
定义 使用生成器模式封装一个产品的构造过程,并允许按步骤构造。举个例子,我们如果构建生成一台电脑,那么我们可能需要这么几个步骤:需要一个主机需要一个显示器需要一个键盘需要一个鼠标需要音响等虽然我们具体在构建一台主机的时候,每个对象的实际步骤是不一样的,比如,有的对象构建了i7cpu的主机,有的对象构建了i5cpu的主机,有的对象构建了普通键盘,有的对象构建了机械键...原创 2018-08-03 16:56:39 · 172 阅读 · 0 评论 -
设计模式总结(集合)
总结了常用的设计模式,这里做一个分类和集合。创建型工厂模式单例模式原型模式结构型适配器模式桥接模式组合模式装饰者模式外观模式享元模式代理模式行为型模式责任链模式命令模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式模板方法模式访问者模式...原创 2018-08-08 13:44:34 · 161 阅读 · 0 评论