
设计模式
zhen921
这个作者很懒,什么都没留下…
展开
-
单例模式(singleton)
定义 一个类只有一个实例,并且提供了全局的访问点。 理解 当我们需要一个类只有一个实例的时候,用单例模式是个比较不错的选择,不用全局变量,是因为全局变量要在初始化的时候创建,太耗费资源,而单例模式只有用到的时候才创建实例 应用场景 其实主要集中在管理共享资源的对象上,因为共享资源如果有多个对象操作,会很混乱。 因此管理注册表的对象...原创 2018-04-12 11:22:43 · 216 阅读 · 0 评论 -
设计模式入门——中介者模式(mediator)
前言 中介者模式又称为调停者模式,作为行为型的模式之一,本身是个很低调的模式,因为应用场合有限,所以不那么被人熟知 下文我将举例介绍中介者模式的作用,以及中介者模式应用的意义,文末我会总结一下中介者模式的一些特点 实例引入 假设现在科技发达之后,家里所有设备都是智能化的,而小明在家洗澡的时候有个习惯就是喜欢听歌,而且洗澡时候还要把窗帘拉上。因此就有这种情形,小明...原创 2018-09-02 16:52:09 · 18127 阅读 · 13 评论 -
设计模式入门-------责任链模式(responsibility)
前言 责任链模式是行为型模式之一,由于其构成要素简单清晰,理解起来较为简单。 因此本篇博客我举一个极其简单的例子来说明一下它的基本构成,然后梳理一下它的一些特点 文章最后我将结合简单工厂把程序稍微改进一下 理解 责任链模式中里面的每个对象都持有对下一个对象的引用,因此连成一条链,所以是责任链,责任说的就是要做的事,请求会在链端开始传递,直到有一个合适的对象处理这个请求...原创 2018-09-01 11:36:22 · 378 阅读 · 0 评论 -
设计模式实例源码
我在博客中所写过的设计模式的举例源码,均已公开,欢迎下载查阅。由于是java源码,请注意打开工具。云盘链接地址:https://pan.baidu.com/s/10f6CQMXKY2D2HrpnG9IOgw提取密码 : xtjt...原创 2018-09-04 10:09:45 · 351 阅读 · 0 评论 -
代理模式(proxy)
前言 代理模式是一个大类,而且会经常用到,它包含了远程代理,虚拟代理,防火墙代理等,当然还有动态代理了,学过spring的人应该不陌生。 各种代理模式样式差别很大,不容易从程序上辨认,但是可以从功能上认出来,今天我就举个例子聊聊代理模式最基本的样子,从例子中认识代理模式。 举例为静态代理的基本应用,稍后再介绍代理模式的一些特点。 情境引入 本次我们以滴滴为例...原创 2018-08-29 11:07:42 · 16583 阅读 · 2 评论 -
模版方法模式(template)
理解涵义:定义了一个算法的步骤,允许子类实现其中的一个或多个步骤模版方法普遍是在多个类中有些算法步骤一成不变的出现,或是类与类算法步骤是相同,但具体实现有差异,可以将相同的部分提取出来封装起来,定义基本算法骨架,然后让子类去继承实现 模版方法在实际中应用很多,其重要性不在于提供的步骤,而是把相同代码提取出来进行封装的思想 应用环境只要多个类都要按一定算法步骤去写,就能提取封装...原创 2018-08-21 19:00:44 · 415 阅读 · 0 评论 -
工厂模式一一工厂方法模式 (factory method)
前言 之前的博客介绍了简单工厂,虽然简单工厂达到了工厂模式的效果,但是简单工厂在设计上却有很大的缺陷,其中最大的缺点就是不易扩展,而在工厂方法模式里则修正了这个缺点,下面举例的程序是从简单工厂改的,简单工厂是了解工厂模式的入门,建议先去看看我写的简单工厂的博客。传送门:https://blog.youkuaiyun.com/zhen921/article/details/81986986...原创 2018-08-24 17:05:43 · 781 阅读 · 0 评论 -
建造者模式(builder)
前言 建造者模式也叫生成器模式,作为设计模式里五个创建者模式之一,它的作用也是为了创建对象,但是不同于其他模式直接new的方式,它的存在是为了创建复杂的对象,因此创建之路一波三折。 同工厂模式相似,建造者模式也是完成了对创建对象程序的封装,达到了要用就拿的效果。 关于什么是复杂的对象,如果要用的时候直接new出来的就不复杂,复杂的对象复杂在为了达到某种作用,我们需要对某些对象进行属性...原创 2018-08-31 13:49:11 · 269 阅读 · 0 评论 -
命令模式(command)
定义 命令模式将请求,封装成对象,以便使用不同的请求,队列或者日志来参数化其他的对象,命令模式也支持撤销的操作。 理解 在我看来命令模式最大的优势就是实现了调用者与被调用者之间的解耦,而被调用者往往不只一种,但被封装成对象之后,留出统一的接口,这样可以实现统一调用,而通过命令模式实现的撤销操作则用处更大了。 应用场景 利用命令模式可以将运算程序都...原创 2018-08-28 17:24:15 · 321 阅读 · 1 评论 -
工厂模式一一简单工厂(factory)
写在前面 首先要明白简单工厂,并不是23种设计模式的一种,它更应该归类到一种编程习惯之中,不论是抽象工厂,还是工厂方法都是比较成熟而且富有弹性的设计模式了,在这里谈简单工厂是为了引出那两个重磅级的设计模式。 简单工厂的作用 工厂,一听就知道是用来制造东西的,而在程序里工厂是专门用来创建对象的,这点都不例外,说白了简单工厂模式,就是专门建立了一个类负责对象...原创 2018-08-23 20:14:01 · 557 阅读 · 0 评论 -
设计模式入门———状态模式(State)
前言在我看来,状态模式在设计模式中算是比较复杂的了,而且这个模式并不怎么优秀 本篇我将举两个例子来说明用不用状态模式对程序结构上的影响,以及状态模式所带来的好处 由于状态模式和策略模式类图基本一致,因此文末将做一些对比 情景引入 首先我们先看一个没加状态模式的简单例子,支付宝里有个小游戏叫蚂蚁庄园,我在里面已经捐满了500颗爱心,获得了四个勋章,但是竟然有人都捐70...原创 2018-08-30 17:22:32 · 3575 阅读 · 0 评论 -
装饰者模式(decorator)
作用 装饰者模式的作用就是可以方便的为组件添加功能,例如买卷饼的时候,你肯定希望卷饼是按自己的口味卷的,要不要放鸡蛋,要不要加生菜,辣椒酱还是番茄酱,如果能自由搭配最好,写程序也是一样,如果有一堆零件,自由搭配肯定更灵活,所以装饰者存在的意义就是给基本组件附加功能。 应用场景io流(装饰者模式在实例化的时候,总是一个套一个,如下所示) File f=new File(...原创 2018-08-20 16:03:46 · 252 阅读 · 0 评论 -
外观模式(facade)
外观模式本身理解起来是很容易的,也就一句话 talk is cheap , show you code情景假设你家养了一个机器人,笨笨,它很笨,而你经常让他给你冲咖啡,但是步骤都要你一个一个去指示,比如,放咖啡粉,倒热水,搅拌搅拌,都要去下命令让他完成,而如果想摆脱这些繁杂的步骤,使用外观模式就行了,这样你的指令就是,去帮我泡杯咖啡。(下面例子中注意对比加不加外观模式源程序和类图的区别)。...原创 2018-08-23 10:05:35 · 606 阅读 · 0 评论 -
适配器模式(adapter)
理解 适配器模式所做的就是对接口的转换,如果想给手机充电,而现实是只有一个三孔插头,此时如果有一个插座肯定就解决了。因此适配器直接作用就是对接口的转换,适配成你现实需要的接口,而适配器是在原有类的基础上扩展出来的(有现成的三孔插头了,才能做适配),即也是为了对现有类方法的复用 适配器分为两种类适配器通过继承创建的适配器对象适配器通过组合创建的适配器 应用场...原创 2018-08-22 16:07:27 · 2049 阅读 · 0 评论 -
工厂模式一一抽象工厂模式(abstract factory)
前言 什么是工厂我就不在介绍了,我写的简单工厂已经介绍的很详细了,文中有链接。不论是对比简单工厂还是工厂方法,抽象工厂看起来都是一种很麻烦的模式,抽象工厂和工厂方法其实是完成了类似的功能,上期我们介绍工厂方法的时候我说过,对于工厂方法的扩展,添加一种产品是很容易的,而且不用修改原有的代码,而如果对已经存在的产品去细分,则没办法符合开闭原则了(在菜单上如果我添加新的产品蛋炒饭,工厂方...原创 2018-08-26 16:48:30 · 387 阅读 · 1 评论 -
观察者模式(observer)
我的看法 其实现方式实际上为观察者定义统一的接口,便于主题的通知,而主题内维护了一个观察者列表,在列表上的观察者,主题发生变化的时候会遍历通知 实质上 观察者模式=出版者+订阅者(即被观察的主题发生变化会通知观察者) 应用场景 订阅号 swing组件的监听器 天气预报平台等 其中用...原创 2018-08-19 10:51:23 · 394 阅读 · 0 评论 -
策略模式(strategy)
个人理解策略模式封装了算法族,其设计的目标在于对容易发生变化的行为(算法)进行封装,使其在不影响源代码的基础上容易添加删除行为(算法)。应用场景 主要用于在类与类之间的表现在行为不同,运行时需要选择不同的行为,策略模式则封装了这些行为 考虑到不同的情况会应用不同的算法,也用策略模式封装算法 所体现的设计原则 对修改封闭,对扩展开放(想要添加新的行为不用修改原有代码) ...原创 2018-08-18 17:20:39 · 342 阅读 · 0 评论 -
设计模式入门——备忘录模式
前言说起备忘录模式也许会很陌生,但是我们身边有很多备忘录模式的应用,例如在手机或电脑上下棋,如果下错了,是可以悔棋的,在比如我们小时候玩坦克大战,如果坦克还有很多条命,而且现在装备很厉害,我们就想做一下备份,等挂掉的时候重新恢复一下接着打。这样我们就明白备忘录模式是做什么的了,简单说就是备份当前角色状态,后期可以回滚回来。 作为行为型模式的一种,备忘录模式并不是很有名,但是挺有用,备忘录模式...原创 2018-09-03 11:24:55 · 720 阅读 · 0 评论