设计模式
文章平均质量分 94
iteye_19426
这个作者很懒,什么都没留下…
展开
-
23种设计模式(12):策略模式
策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就...原创 2016-12-20 19:00:16 · 132 阅读 · 0 评论 -
23种设计模式(4):模板模式
1 辉煌工程——制造悍马 周三,9:00,我刚刚坐到位置上,打开电脑准备开始干活。“小三,小三,叫一下其他同事,到会议室开会”,老大跑过来吼,带着坏笑。还没等大家坐稳,老大就开讲了:“告诉大家一个好消息,昨天终于把××模型公司的口子打开了,要我们做悍马模型,虽然是第一个车辆模型,但是我们有能力、有信心做好,我们一定要……”(中间省略20分钟的讲话,如果你听过领导人的讲话,这个你应该能够...原创 2016-12-22 09:37:10 · 103 阅读 · 0 评论 -
23种设计模式(9):命令模式
一:命令模式的定义 --->命令模式是一个高内聚的模式 --->将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 --->命令模式的角色 ● Receive接收者角色==>该角色就是干活的角色,命令传递到这里是应该被执行的 ...原创 2016-12-23 23:14:18 · 106 阅读 · 0 评论 -
设计模式六大原则(2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子...原创 2016-12-23 23:14:30 · 88 阅读 · 0 评论 -
23种设计模式(10):责任链模式
一:责任链模式的定义 --->使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 --->责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果 --->一般会有一个封装类对责任模式进行封装,也就是替...原创 2016-12-23 23:14:44 · 89 阅读 · 0 评论 -
23种设计模式(1):单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以<<开头和以>>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对...原创 2016-12-23 23:17:31 · 79 阅读 · 0 评论 -
设计模式六大原则(6):开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设...原创 2016-12-23 23:17:43 · 72 阅读 · 0 评论 -
23种设计模式(8):中介者模式
一:中介模式的定义 --->用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 --->中介模式的组成部分: ● Mediator 抽象中介者角色:抽象中介者角色定义统一的接口,用于各同事角色之间的通信。 ● Concre...原创 2016-12-24 23:37:54 · 144 阅读 · 0 评论 -
23种设计模式(11):装饰者模式
一:装饰模式的定义 --->动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 --->如果大家还记得代理模式,那么很容易看懂这个类图,装饰类的作用也就是一个特殊的代理类. --->在装饰模式中,必然有一个最基本、最核心、最原始的接口或抽象类充当Component抽象构件二:装饰模式的角色 ...原创 2016-12-24 23:38:10 · 97 阅读 · 0 评论 -
23种设计模式(13):适配器模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题...原创 2016-12-24 23:38:26 · 139 阅读 · 0 评论 -
观察者模式(监听器模式)
观察者模式基本概念 观察者模式(Observer),也称发布/订阅模式; 观察者模式是软件设计模式的一种。在此模式中,一个目标(被观察者)管理所有相依于它的观察者,并且在它本身的状态改变时主动发出通知。这通常通过调用各观察者所提供的方法来实现。 观察者模式完美的将观察者和被观察的对象分离开。 面向对象设计的一个原则是:系统中的...原创 2017-01-06 10:31:29 · 246 阅读 · 0 评论 -
设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时...原创 2016-12-22 09:36:55 · 81 阅读 · 0 评论 -
设计模式六大原则(3):依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I...原创 2016-12-22 09:36:42 · 134 阅读 · 0 评论 -
23种设计模式(16):门面模式
一:门面模式的定义 --->门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式 --->要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 --->门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统...原创 2016-12-20 19:01:14 · 86 阅读 · 0 评论 -
23种设计模式(17):备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。这时...原创 2016-12-20 19:05:03 · 85 阅读 · 0 评论 -
23种设计模式(14):合成模式
合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。 合成模式 合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。 比如,一个文件系统就是一个典型的合成模式系统。下图是常见的计算机...原创 2016-12-20 19:05:41 · 182 阅读 · 0 评论 -
23种设计模式(6):代理模式
先看一个例子,是有关于打游戏杀怪兽的。 [java] view plain copy //先定义一个游戏者接口 public interface IGamePlayer { //登陆游戏 public void login(String user, String password); //杀怪,网络游戏...原创 2016-12-21 17:22:14 · 104 阅读 · 0 评论 -
23种设计模式(5):建造者模式
一:建造者模式的定义 --->建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 ● Product产品类 通常是实现了模板方法模式,也就是有模板方法和基本方法,这个参考模板方法模式。例子中的BenzModel和BMWModel就属于产...原创 2016-12-21 17:22:34 · 106 阅读 · 0 评论 -
23种设计模式(3):抽象工厂模式
1 女娲的失误 上一篇讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,忘记给人类定义性别了,那怎么办?抹掉重来,于是人类经过一次大洗礼,所有的人种都消灭掉了,世界又是空无一物,寂静而又寂寞。由于女娲之前的准备工作花费了非常大的精力,比如准备黄土、八卦炉等,从头开始建立所有的事物也...原创 2016-12-21 17:22:48 · 105 阅读 · 0 评论 -
设计模式六大原则(4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类C来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵...原创 2016-12-21 17:23:18 · 76 阅读 · 0 评论 -
设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才...原创 2016-12-21 17:26:39 · 96 阅读 · 0 评论 -
23种设计模式(7):原型模式
本文主要介绍设计模式中的原型模式。 现在电子账单越来越流行了,比如你的信用卡,到月初的时候银行就会发一份电子邮件到你邮箱中,说你这个月消费了多少,什么时候消费的,积分是多少等等,这是每个月发一次,还有一种也是银行发的邮件你肯定非常有印象:广告信,现在各大银行的信用卡部门都在拉拢客户,电子邮件是一种廉价、快捷的通讯方式,你用纸质的广告信那个费用多高呀,比如我行今天推出一个信用卡刷卡抽奖...原创 2016-12-22 09:33:49 · 139 阅读 · 0 评论 -
23种设计模式(2):工厂方法模式
1 女娲造人的故事东汉《风俗通》记录了一则神话故事:“开天辟地,未有人民,女娲搏黄土做人”,讲述的内容就是大家非常熟悉的女娲造人的故事。开天辟地之初,大地上并没有生物,只有苍茫大地,纯粹而洁净的自然环境,寂静而又寂寞,于是女娲决定创造一个新物种(即人类)来增加世界的繁荣,怎么制造呢?别忘了女娲是神仙,没有办不到的事情,造人的过程是这样的:首先,女娲采集黄土捏成人的形状,然后放到八卦炉中烧制...原创 2016-12-22 09:34:03 · 130 阅读 · 0 评论 -
回调模式
回调在spring中被大量使用,那什么是回调呢? 简单的说,在A类中调用B类的C方法,然后B类调用A类中的D方法。方法D被称为回调方法。回调是实现异步的基础。经典的回调方式如下:Class A实现回调接口CallBack——背景1class A中包含一个class B的引用b ——背景2class B有一个参数为callback的方法f(CallBack cal...原创 2017-01-06 14:08:57 · 201 阅读 · 0 评论