![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
a925907195
best
展开
-
23种设计模式-15-备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来转载 2014-12-15 19:25:41 · 540 阅读 · 0 评论 -
23种设计模式-2-工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法模式代码[java] view plaincopyinterface IProduct { public void productMethod(); } cl转载 2014-12-14 20:22:55 · 661 阅读 · 0 评论 -
23种设计模式-3-抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图:抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,转载 2014-12-14 20:27:17 · 596 阅读 · 0 评论 -
23种设计模式-6-模版方法模式
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图: 事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和转载 2014-12-14 21:09:22 · 612 阅读 · 0 评论 -
23种设计模式-8-观察者模式
定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。类型:行为类模式类图: 在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,我们要设计一个自动部署转载 2014-12-14 21:29:42 · 665 阅读 · 0 评论 -
23种设计模式-1-单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对象的关转载 2014-12-14 20:16:23 · 638 阅读 · 0 评论 -
23种设计模式-9-访问者模式
定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:行为类模式类图: 访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。我们首先来看一个简单的例子,代码如下:[java] view plaincopyclass转载 2014-12-14 21:57:52 · 559 阅读 · 0 评论 -
23种设计模式-12-策略模式
定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式类图: 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,转载 2014-12-15 11:00:11 · 615 阅读 · 0 评论 -
23种设计模式-4-建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象转载 2014-12-14 20:34:02 · 561 阅读 · 0 评论 -
23种设计模式-7-中介者模式
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子转载 2014-12-14 21:23:23 · 667 阅读 · 0 评论 -
23种设计模式-10-命令模式
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类模式类图:命令模式的结构 顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute转载 2014-12-14 22:27:05 · 564 阅读 · 0 评论 -
23种设计模式-19-享元模式
目录(?)[-]一享元模式简介Brief Introduction二解决的问题What To Solve三享元模式分析Analysis享元模式结构代码实例运行结果四享元模式实例分析Example场景代码实例运行结果五总结Summary原文:http://www.cnblogs.com/ywqu/tag/Design%20pattern/转载 2014-12-15 21:06:16 · 676 阅读 · 0 评论 -
23种设计模式-13-迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:[java] view plaincopypublic static void prin转载 2014-12-15 11:52:42 · 650 阅读 · 0 评论 -
23种设计模式-11-责任连模式
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。类型:行为类模式类图: 首先来看一段代码:[java] view plaincopypublic void test(int i, Request req转载 2014-12-15 10:42:38 · 617 阅读 · 0 评论 -
23种设计模式-16-组合模式
目录(?)[-]一组合模式简介Brief Introduction二解决的问题What To Solve三组合模式分析Analysis组合模式结构源代码程序运行结果四案例分析Example场景代码五总结Summary一、组合模式简介(Brief Introduction)组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使转载 2014-12-15 19:44:51 · 601 阅读 · 0 评论 -
23种设计模式-17-装饰模式
目录(?)[-]一装饰模式简介Brief Introduction二解决的问题What To Solve三装饰模式分析Analysis装饰模式结构源代码程序运行结果四案例分析Example五总结Summary一、装饰模式简介(Brief Introduction)动态地给一个对象添加一些额外的职责。优点:把类中的装饰功能从类中搬移出去,这转载 2014-12-15 20:10:40 · 669 阅读 · 0 评论 -
23种设计模式-20-桥接模式
目录(?)[-]一桥接模式简介Brief Introduction二解决的问题What To Solve三桥接模式分析Analysis桥接模式结构代码实例运行结果四桥接模式实例分析Example场景代码实例运行结果五总结Summary一、桥接模式简介(Brief Introduction)桥接模式(Bridge Pattern),将抽象部分与转载 2014-12-15 21:33:57 · 662 阅读 · 0 评论 -
23种设计模式-14-解释器模式
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。类型:行为类模式类图: 解释器模式是一个比较少用的模式,本人之前也没有用过这个模式。下面我们就来一起看一下解释器模式。 解释器模式的结构抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interp转载 2014-12-15 16:56:23 · 775 阅读 · 0 评论 -
23种设计模式-21-命令模式
命令模式(Command)1 场景问题 1.1 如何开机 估计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是按下启动按钮就可以了吗?难道还有什么玄机不成。 对于使用电脑的客户——就是我们来说,开机确实很简单,按下启动按钮,然后耐心等待就可以了。但是当我们按下启动按钮过后呢?谁来处理?如何处理?都经历了怎样的过程,才让电脑真转载 2014-12-16 16:17:45 · 626 阅读 · 0 评论 -
23种设计模式-依赖、关联、聚合和组合之间区别的理解
在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但是基本相同并不等于完全相同,这一点在我的前一篇博文《设计模式中类的关系》中已经有所提及,下面就来详细的论述一下在java中如何准确的体现依赖、关联、聚合和组合。首先看一看书上对这四种关系的定义转载 2014-12-17 15:47:22 · 4949 阅读 · 1 评论 -
23种设计模式-设计模式六大原则
单一职责原则(Single Responsibility Principle)定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责转载 2014-12-17 16:12:16 · 1893 阅读 · 0 评论 -
23种设计模式-22-中介者模式
一、初识中介者模式那些年,我们一起上过的大学,班级里有班长,有团书记。想一想如果没有QQ这种通讯工具的话,那么班长或者团支书该怎样下达消息呢??同时,班级上两个同学之间也可惜沟通啊,沟通一下,院里哪个女生,哪个帅哥呀~~~如果没有QQ的话,大概就是下面的情景:哎呀呀,看看这个乱那。如果同学的数目多起来就会变成网状的结构啦。原本把一个系统分割成一些对象是可以增强复用性的,但是转载 2014-12-16 16:18:57 · 734 阅读 · 0 评论 -
23种设计模式-23-建造者(生成器)模式
一、 建造者(Builder)模式建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。对象性质的建造有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件转载 2014-12-16 16:42:57 · 674 阅读 · 0 评论 -
23种设计模式-设计模式总结
Longronglin之设计模式:Christopher Alexander 说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。模式描述为:在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境。阅读类图和对象图请先学习UML创建模式 结构模式 行为模式创建模式:对类的实转载 2014-12-17 14:51:30 · 4623 阅读 · 0 评论 -
23种设计模式-5-原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clo转载 2014-12-14 20:42:47 · 535 阅读 · 0 评论 -
23种设计模式-18-工厂方法模式
目录(?)[-]一外观模式简介Brief Introduction二解决的问题What To Solve分离不同的两个层减少依赖为新旧系统交互提供接口三外观模式分析Analysis外观模式结构源代码程序运行结果四案例分析Example场景代码五总结Summary一、外观模式简介(Brief Introduction)外观模转载 2014-12-15 20:27:01 · 657 阅读 · 0 评论