设计模式
文章平均质量分 82
词汇族
这个作者很懒,什么都没留下…
展开
-
设计模式(一)总纲
原链接:http://blog.csdn.net/zhengzhb/article/details/7247188IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置;而自己将代码改了又改,删了又建,几乎晕厥,转载 2017-12-11 09:23:05 · 191 阅读 · 0 评论 -
设计模式(十八)------23种设计模式(10):命令模式
使用频率:★★★★☆一、什么是命令模式将请求封装成命令对象,请求的具体执行由命令接收者执行;二、补充说明命令发送者与命令执行者解耦;可扩展命令模式:对请求排队或者记录请求日志,以及支持可撤销的操作;每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。三、角色抽象命令具体命令命令接收者:执行命令转载 2017-12-13 09:32:12 · 152 阅读 · 0 评论 -
设计模式(十九)------23种设计模式(11):责任链模式
使用频率:★★★☆☆一、什么是责任链模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,当某个接受者不能处理该请求时,会将该请求转给下一个接受者处理;二、补充说明请求发送者与请求接受者解耦应用例子:struts的拦截器,servlet的过滤器三、角色抽象请求处理者具体请求处理者:包含下一个具体请求处理者的引用客户端:转载 2017-12-13 09:37:05 · 125 阅读 · 0 评论 -
设计模式(二十)------23种设计模式(12):策略模式
使用频率:★★★★☆什么是策略模式对象的行为,在不同的环境下,有不同的实现;比如人的上班行为,在不同的环境下,可以选择走路上班或者开车上班,由客户端根据情况决定采用何种策略;补充说明符合“开闭原则”,可以在不修改原有代码的基础上替换、添加新的策略;不同的策略可以相互替换;客户端自己决定在什么情况下使用什么具体策略角色;与状态模式区别:使用策略模式时,转载 2017-12-13 09:59:31 · 256 阅读 · 0 评论 -
设计模式(二十一)------23种设计模式(13):迭代器模式
使用频率:★★★★★一、什么是迭代器模式提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。二、补充说明单一职责原则,分离了集合对象的遍历行为,抽象出一个迭代器类来负责;三、角色迭代器接口迭代器具体实现抽象容器具体容器四、例子,JAVA实现例子说明:使用迭代器遍历容器迭代器接口packag转载 2017-12-13 10:05:34 · 143 阅读 · 0 评论 -
设计模式(二十二)------23种设计模式(14):解释器模式
使用频率:★☆☆☆☆一、什么是解释器模式定义一些语法规则,然后定义一个解析器去解析该语法;所谓解释器模式就是定义语言的文法,并且建立一个解释器来解释该语言中的句子。 在这里我们将语言理解成使用规定格式和语法的代码。 在前面我们知道可以构建解释器来解决那些频繁发生的某一特定类型的问题,在这我们将这些问题的实例表述为一个语言中句子。例如我转载 2017-12-13 10:40:54 · 164 阅读 · 0 评论 -
设计模式(二十三)------23种设计模式(15):备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来转载 2017-12-13 10:47:08 · 163 阅读 · 0 评论 -
设计模式(二十四)------23种设计模式(16):状态模式
使用频率:★★★☆☆一、什么是状态模式一个对象的行为根据其内部状态的改变自动变化;二、补充说明结构与策略模式基本一致;与策略模式区别:使用策略模式时,客户端手动选择策略,使用状态模式时,其行为是根据状态是自动切换的。其内部状态改变时,它的行为(方法)也跟着改变,看起来就像修改了类的方法;三、角色抽象状态具体状态环境:定义客户端感兴趣的转载 2017-12-13 11:06:55 · 211 阅读 · 0 评论 -
设计模式(二十五)------23种设计模式(17):享元模式
使用频率:★☆☆☆☆一、什么是享元模式大量细粒度对象共享复用二、补充说明可以节约内存空间,提高系统的性能;一个对象有内部和外部两种状态,内部状态是不变的,外部状态是可变的,把一个对象分成内部状态和外部状态,然后通过共享内部状态,达到节约内存空间的目的;应用场景举例:一个文档中多次出现相同的图片;一篇文章中出现了很多重复的字符串;围棋的棋子(黑棋和白旗);转载 2017-12-13 11:13:39 · 185 阅读 · 0 评论 -
设计模式(二十六)------23种设计模式(18):桥接模式
使用频率:★★★☆☆一、什么是桥接模式将对象的行为抽象为接口,作为抽象类的成员属性在抽象层进行组合(个人理解,仅供参考);二、补充说明改变对象与其行为的强耦合关系,使之与行为解耦;使对象的行为以及对象本身都能独立变化;三、角色抽象类具体实现类行为接口具体行为实现类客户端四、例子,JAVA实现例子说明:对象:人(转载 2017-12-13 11:21:34 · 168 阅读 · 0 评论 -
设计模式(二十七)------23种设计模式(19):组合模式
使用频率:★★★★☆一、什么是组合模式树形结构的实现,用于描述“整体-部分”的关系;二、补充说明使用场景:部分/整体场景,如树形菜单; 文件/文件夹; 树形结构的公司层级关系...三、角色抽象角色叶子角色树枝角色客户端角色四、例子,JAVA实现利用组合模式实现如下文件/文件夹的树形结构关系;抽象角色,抽象文件: 具转载 2017-12-13 17:43:25 · 160 阅读 · 0 评论 -
设计模式(二十八)------23种设计模式(20):外观模式
使用频率:★★★★★一、什么是外观模式在子系统中的接口之上定义一个更高层次的接口,方便使用子系统中的接口;二、补充说明缺点:不符合开闭原则,修改子系统的代码会影响高层接口代码;优点:引入外观类可以降低系统的复杂度,提高了客户端使用的便捷性;优点:客户类与子系统解耦;三、角色子系统角色外观角色客户端角色四、例子,JAVA实现转载 2017-12-14 09:00:36 · 138 阅读 · 0 评论 -
设计模式(二十九)------23种设计模式(21):代理模式
使用频率:★★★★☆一、什么是代理模式通过代理对象间接控制并访问目标对象的方法;二、补充说明想到代理模式,容易让人想到AOP思想,Spring中的AOP可以通过动态代理实现;代理模式有静态代理和动态代理两种;解耦调用者和被调用者;三、角色抽象主题,定义一些需要代理的方法具体主题,实现一些具体逻辑代理主题,代理和封装具体主题客户端M转载 2017-12-14 09:01:03 · 167 阅读 · 0 评论 -
设计模式(三十)------23种设计模式(22):装饰器模式
转载自:http://blog.csdn.net/hust_is_lcd/article/details/78843201.认识装饰器模式 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能。通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类这种方式并不可取。在面向对象转载 2017-12-14 09:01:41 · 244 阅读 · 0 评论 -
设计模式(三十一)------23种设计模式(23):简单工厂模式
使用频率:★★★★☆一、什么是简单工厂模式一个工厂方法,依据传入的参数,生成对应的具体产品对象;二、补充说明不属于23种GOF设计模式;工厂方法一般设成静态方法,返回值一般是抽象类或接口,具体的产品类一般继承或实现抽象类、接口;优点:产品使用者不需要关心产品类的创建过程,与具体产品的实现类达到解耦的效果;缺点:违背"开放--封闭"原则(OCP),因为新增转载 2017-12-14 09:01:59 · 263 阅读 · 0 评论 -
设计模式(十七)------23种设计模式(9):访问者模式
转载自:http://blog.csdn.net/zhengzhb/article/details/7489639定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:行为类模式类图: 访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。我们首转载 2017-12-13 09:11:45 · 142 阅读 · 0 评论 -
设计模式(十六)------23种设计模式(8):观察者模式
定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。类型:行为类模式类图: 在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,我们要设计一个自动部署转载 2017-12-13 08:45:59 · 223 阅读 · 0 评论 -
设计模式(二)------设计模式六大原则(1):单一职责原则
原链接:http://blog.csdn.net/zhengzhb/article/details/7278174定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两转载 2017-12-11 09:28:08 · 135 阅读 · 0 评论 -
设计模式(三)------设计模式六大原则(2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子转载 2017-12-11 09:34:03 · 169 阅读 · 0 评论 -
设计模式(四)------设计模式六大原则(3):依赖倒置原则
原链接:http://blog.csdn.net/zhengzhb/article/details/7289269定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原转载 2017-12-11 09:52:48 · 131 阅读 · 0 评论 -
设计模式(五)------设计模式六大原则(4):接口隔离原则
转载自:http://blog.csdn.net/zhengzhb/article/details/7296921定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立翻译 2017-12-11 10:07:34 · 232 阅读 · 0 评论 -
设计模式(六)------设计模式六大原则(5):迪米特法则
转载自:http://www.jianshu.com/p/14589fb6978e揭秘迪米特法则迪米特法则(Law of demeter,缩写是LOD)要求:一个对象应该对其他对象保持最少了解, 通缩的讲就是一个类对自己依赖的类知道的越少越好,也就是对于被依赖的类,向外公开的方法应该尽可能的少。迪米特法则还有一种解释:Only talk to your immediate friend转载 2017-12-11 10:56:00 · 320 阅读 · 0 评论 -
设计模式(七)------设计模式六大原则(6):开闭原则
转载自:http://blog.csdn.net/zhengzhb/article/details/7296944定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软转载 2017-12-11 11:06:39 · 140 阅读 · 0 评论 -
设计模式(八)------23种设计模式(1):单例模式
原链接:http://blog.csdn.net/zhengzhb/article/details/7331369定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以>结尾的为注释信息3.修饰符+代表public,-代表privat转载 2017-12-12 08:40:13 · 160 阅读 · 0 评论 -
设计模式(九)------23种设计模式(2):工厂方法模式
转载自:http://blog.csdn.net/zhengzhb/article/details/7348707定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法模式代码[java] view plain copyint转载 2017-12-12 09:06:49 · 145 阅读 · 0 评论 -
设计模式(十)------23种设计模式(3):抽象工厂模式
转载自:https://www.cnblogs.com/chenpi/p/5156801.html (风一样的码农)阅读目录使用频率:★★★★★一、什么是抽象工厂模式二、补充说明三、角色四、例子使用频率:★★★★★一、什么是抽象工厂模式就是对一组具有相同主题的工厂进行封装(维基百科解释的很到位);例如:生产一台转载 2017-12-12 09:29:15 · 253 阅读 · 0 评论 -
设计模式(十一)------23种设计模式(4):建造者模式(生成器模式)
转载自:http://www.cnblogs.com/chenpi/p/5166440.html使用频率:★★☆☆☆一、什么是生成器模式对复杂对象的创建过程进行抽象,相同的创建步骤,不一样的创建过程实现,生成不同表示的对象;例如创建一台电脑,对其应用生成器模式进行创建:创建过程是指创建cpu、创建内存、创建显示器三个步骤,所有品牌电脑的创建过程都转载 2017-12-12 09:51:44 · 183 阅读 · 0 评论 -
设计模式(十二)------23种设计模式(5):原型模式
原链接:http://blog.csdn.net/zhengzhb/article/details/7393528定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneab转载 2017-12-12 10:12:53 · 182 阅读 · 0 评论 -
设计模式(十三)------创建类模式总结篇
转载自:http://blog.csdn.net/zhengzhb/article/details/7393557创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。创建类模式有5种,分别是:单例模式:用于得到内存中的唯一对象。工厂方法模式:用于创建复杂对象。抽象工厂模式:用于创建一组相关或相互依赖的复杂对象。转载 2017-12-12 10:16:20 · 140 阅读 · 0 评论 -
设计模式(十四)------23种设计模式(6):模版方法模式
转载自:http://blog.csdn.net/zhengzhb/article/details/7405608定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图: 事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿转载 2017-12-12 10:38:40 · 162 阅读 · 0 评论 -
设计模式(十五)------23种设计模式(7):中介者模式
使用频率:★★★☆☆一、什么是中介者模式对象之间通过中介者对象进行交互,而不是直接交互;二、补充说明对紧密关联的各个对象解耦;典型例子:QQ群,聊天室;三、角色抽象中介者具体中介者抽象对象具体对象四、例子,JAVA实现例子说明,一个网络聊天室抽象中介者package com.pichen.dp.beha转载 2017-12-12 11:03:17 · 170 阅读 · 0 评论 -
设计模式(三十二)------设计模式总结分类
什么是设计模式为解决某一类普遍存在的问题而提供的一种解决方案;分类及定义创建型模式(5)1、原型模式:通过复制一个已存在对象来生成一个新对象,被复制的对象称为原型;详情...2、单例模式:一个类只有一个全局实例;详情...3、生成器模式:对复杂对象的创建过程进行抽象,相同的创建步骤,不一样的创建过程实现,生成不同表示的对象;详情...转载 2017-12-14 09:02:27 · 196 阅读 · 0 评论