24种设计模式
愚公要移山
这个作者很懒,什么都没留下…
展开
-
策略模式
记得在中学时代,每次考完老师评讲试卷,都会说这道题有多少种解法,然后在黑板上板书第一种、第二种等解法,其实这个情况就类似于今天的情况,也就是策略模式。他表示的是在遇到一种问题有多种解法的时候,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。OK,正式开始今天的文章:一、理解策略模式为了更好的理解这个模式,我们再举一个例子,我们出去旅游的时候可能有很多种出行方式,比如说我们可以...原创 2019-07-05 21:31:02 · 305 阅读 · 0 评论 -
设计模式之代理模式
我相信我们的朋友圈都有过微商推广商品的广告,你也一定知道“瓜子二手车直卖网,没有中间商赚差价“。或者是租房的时候那些中介,相亲的时候那些媒婆。他们其实就是一些代理,或者说是一些中介。我们通过代理买东西的过程其实就是代理模式的灵活体现。下面我们就好好的分析一下,设计模式中常见的代理模式。一、认识代理模式代理模式分为动态代理和静态代理。两者的差别还是很大的,不过思想都是一样的,起到一个服务中介的作...原创 2019-07-11 16:44:15 · 257 阅读 · 0 评论 -
设计模式之桥接模式
我们都去买过手机,手机按照品牌分可以分为华为、小米、oppo、vivo等品牌,如果这些手机按照内存分又可以分为4G、6G、8G等等。假如我们每一种手机都想要玩一下,至少需要4*3个。这对我们来说这些手机也太多了,竟然有12个,最主要的是手机品牌和内存是放在一起的。现在有这样一种机制,手机牌品商是一个公司,做手机内存的是一个公司,想要做什么手机我们只需要让其两者搭配起来即可。有点类似于全球贸易分工明...原创 2019-07-18 16:24:20 · 147 阅读 · 0 评论 -
设计模式之享元模式
在大学时代,估计每个人都去图书馆借过书。借书的流程很简单,如果书架上有这本书直接拿走,到借阅机上借阅就好了,如果没有,可以到图书管理处去拿一本新书。对于整个图书馆来说,书其实就是共享的,但是我们会发现其实每次借的书都是那些破旧一点的书,而不是新书,这是因为学生太多了,如果我们每一次借书都拿出来一本新书,那整个图书馆估计会放不下,对于我们借书的流程和图书共享的方式就是享元模式。一、认识享元模式1...原创 2019-07-23 18:15:54 · 244 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式也是也是比较容易理解的,就比如说做饭,同样的步骤不同的人做味道是不一样的。或者是造汽车,同样的步骤,造车厂商不一样,造出来的汽车质量不同。这就是模板方法模式。这篇文章将通过案例详细的讲解一下模板方法模式。1、概念它定义一个操作中的算法的框架,而将一些步骤延迟到了子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。2、例子我们拿做饭的例子来说明。比如就做个西红柿鸡...原创 2019-07-17 20:46:38 · 139 阅读 · 0 评论 -
设计模式之组合模式
我们知道古代的皇帝想要管理国家,是不可能直接管理到具体每一个老百姓的,因此设置了很多机构,比如说三省六部,这些机构下面又有很多小的组织。他们共同管理着这个国家。再比如说,一个大公司,下面有很多小的部门,每一个部门下面又有很多个部门。说到底这就是组合模式。这篇文章将仔细的分析一下组合模式。一、认识组合模式1、概念组合模式(Composite Pattern)将对象组合成树形结构以表示“部分-整...原创 2019-07-20 20:26:06 · 183 阅读 · 0 评论 -
设计模式之命令模式
古时候有一天,皇帝大发善心,要大赦天下而且还要减轻赋税,于是大臣们根据皇帝不同的旨意传达不同的指令,不管是什么指令,最终都是由老百姓来执行。这就是命令模式。一、认识命令模式1、概念将客户的请求传入一个对象,请求不同传入的对象也不同。因此可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。意思是什么呢?假如皇帝想要大赦天下,那么大臣们就可以根据皇帝的意思,传达大赦天下的指令。皇帝...原创 2019-07-25 22:09:32 · 157 阅读 · 0 评论 -
设计模式之迭代器模式
对于java的集合容器ArrayList我们都有过输出其数据元素的经历,我们写一个for循环然后遍历输出。然后这样做有一个缺点,那就是我们需要了解ArrayList容器内部的数据结构,比如说里面可能保存的是String或者是Int。现在有一个设计模式叫做迭代器模式,让用户通过特定的接口访问容器的数据,不需要了解容器内部的数据结构。一、认识迭代器模式概念:迭代子模式可以顺序的访问集合内部的元素而...原创 2019-07-31 13:22:31 · 140 阅读 · 0 评论 -
设计模式之状态模式
在网上买东西都见过一件9折,两件5折,限购两件等等这样的宣传语,我们买不同数量的衣服,就会有不同的折扣,这就是今天所讲的状态模式。一、认识状态模式1、概念状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。也就是说,我们把不同的状态包装成一个抽象类,每一个状态都成为一个独立的类。当状态不同时,处理的状态类也就不同了。如果难以理解我们拿上面商场打折...原创 2019-08-14 11:34:06 · 139 阅读 · 0 评论 -
中介者模式
整个设计模式体系中,中介者模式也算是时常用到了,在我自己负责的项目中算是用到了好几次。正好最近一段时间更新一些与设计模式相关的文章,于是花了一些时间整理了一下,如有问题还请指正,共同进步学习。一、认识中介者模式1、概念我们先从例子入手,再着手介绍其概念。对于中介者模式,你脑海中首先映入的肯定就是中介,我们的生活中到处充满着中介,比如说婚姻介绍所,房产中介,甚至于联合国都是中介。他们的作用都是...原创 2019-08-23 16:04:17 · 475 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式很容易理解,比如说古代的时候,前方战线的信息的传递,首先是前线将军将战况交给通信兵,接下来通信兵不能为当前的状况作出指令,于是乎跑到了京城把信息交给了大臣,大臣也不能做决定,于是又把信息交给了皇帝。最终皇帝处理当前的战况信息。这就是责任链模式。整个的处理过程就像是一条链一样。一、认识责任链模式1、概念:将多个对象通过引用连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象...原创 2019-08-15 21:45:59 · 110 阅读 · 0 评论 -
设计模式之观察者模式
我们在电视上都看过这样一个场景,一个小孩拿着报纸在街上吆喝着,“卖报了,卖报了,xx鬼子侵占了中国东三省,张学良拱手让人”。然后想细看内容的人就会买一份报纸。又或者我们肯定都存在着这样一个群,这个微信群专门用于通知消息的,只要群里一有消息,我们就会知道。不管是我们订阅报纸的过程,还是接受群通知的过程,这其实就是观察者模式的灵活体现。这篇文章一起来分析了解一下观察者模式。一、认识观察者模式首先我...原创 2019-07-14 22:38:04 · 152 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式其实理解起来也是比较容易的。比如工地上建房子,对于我们用户来说不需要知道房子是如何建造的,到时候我们只需要去购买就好了,对于开发商来说他只需要指挥下面的无数个包工头去建造就好了,对于包工头他就要知道知道房子的每一个细节,确保万无一失。其实这就是建造者模式,它把创建对象的一些复杂过程(建造衣服)给封装了起来,我们程序员想要new一个新的对象,只需要说出自己条件就好了。OK,了解了建造者模...原创 2019-07-10 14:45:02 · 113 阅读 · 0 评论 -
24种设计模式-代理模式(2)
什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。 比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时这样的: 先定义一种类型的女人:package com.cbf4life.prox...原创 2018-05-14 18:26:04 · 278 阅读 · 0 评论 -
24种设计模式-工厂模式(5)
女娲补天的故事大家都听说过吧,今天不说这个,说女娲创造人的故事,可不是“造人”的工作,这个词被现代人滥用了。这个故事是说,女娲在补了天后,下到凡间一看,哇塞,风景太优美了,天空是湛蓝的,水是清澈的,空气是清新的,太美丽了,然后就待时间长了就有点寂寞了,没有动物,这些看的到都是静态的东西呀,怎么办?别忘了是神仙呀,没有办不到的事情,于是女娲就架起了八卦炉(技术术语:建立工厂)开始创建人,具体...原创 2018-05-21 13:56:25 · 181 阅读 · 0 评论 -
设计模式之单例模式
单例模式是一种常见的设计模式,写法也比较多,在这篇文章里面主要是对单例模式的各种写法进行一个介绍。这篇文章的主要内容如下:首先简单的介绍一下单例模式的使用场景然后就是单例模式写法的介绍。最后对单例模式进行一个总结一、单例模式的介绍比较官方的理解:单例模式确保某个类只有一个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例...原创 2018-05-15 18:11:01 · 238 阅读 · 0 评论 -
24种设计模式-抽象工厂模式(6)
好了,我们继续上一节课,上一节讲到女娲造人,人是造出来了,世界时热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,Shit!忘记给人类定义性别了,那怎么办?抹掉重来,然后就把人类重新洗牌,准备重新开始制造人类。由于先前的工作已经花费了很大的精力做为铺垫,也不想从头开始了,那先说人类(Product 产品类)怎么改吧,好,有了,给每个...原创 2018-05-22 11:56:28 · 212 阅读 · 0 评论 -
24种设计模式-多例模式(4)
有没有一个朝代很多个皇帝,这种情况有没有?有!大点声,有没有? 有!,是,确实有,就出现在明朝,那三国期间的算不算,不算,各自称帝,各有各的地盘,国号不同。大家还记得那首诗《石灰吟》吗?作者是谁?于谦,他是被谁杀死的?明英宗朱祁镇,对,就是那个在土木堡之变中被瓦刺俘虏的皇帝,被俘虏后,他弟弟朱祁钰当上了皇帝,就是明景帝,估计当上皇帝后乐疯了,忘记把老哥朱祁镇削为太上皇了,我 Shit,在中国的历史...原创 2018-05-16 21:13:28 · 208 阅读 · 0 评论 -
24种设计模式-适配器模式(8)
你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是 220V,日本是 110V,但是这个适配器能够把这些不同的电压转换为你需要的 36V 电压,保证你的笔记本能够正常运行,那我们在设计模式中引入这个适配器模式是不是也是这个意思呢?是的,一样的作用,两个不同接口,有不同的实现,但是某一天突然上帝命令你把 B 接口转换为 A 接口,怎么办...原创 2018-05-29 18:59:24 · 240 阅读 · 0 评论 -
24设计模式-模板方法模式(9)
首先做一个车模型。不考虑扩展性,那好办,我先设计个类图:非常简单的实现,你要悍马模型,我就给你悍马模型,先写个抽象类,然后两个不同型号的模型实现类,那我们把这个程序实现出来:HummerModel 抽象类的程序清单如下package com.cbf4life;/***Hummer Model是悍马车辆模型的意思,不是悍马美女车模*/public abstract class Humm...原创 2018-05-30 21:25:45 · 216 阅读 · 0 评论 -
设计模式之门面模式
门面模式又叫外观模式。为了深入理解这个模式,首先讲一个例子。这个例子是我参考的网上的例子,叫[老杨叔叔csdn。当然里面只是参考了其例子的思想。一个例子有一个人叫张三,在外面奋斗了很多年,终于挣了很多钱,这时候就想着建一栋小洋楼。当然他肯定不会是自己一个人盖房子,所以就想着找其他人。首先他需要找一个会砌墙的、会和泥的、会搬砖的等等。 后来张三一想,这也太麻烦了。我要自己找这些人,还要分别...原创 2019-06-12 12:37:47 · 281 阅读 · 0 评论 -
设计模式之工厂模式
在古代的时候,人们身上穿的衣服其实是人们自己使用织布机织的,随着社会的发展,一直到了现代社会,我们身上穿的衣服基本上都是在工厂里面做好了,直接拿到市面上去卖就好了,对于我们身上的衣服而言,由一开始的手工制作再到今天的工厂生产,这就是工厂模式。一、认识工厂模式工厂模式主要分为三个:(1)简单工厂模式:我们的衣服在工厂里面去建造,这就是简单工厂模式(2)工厂方法模式:随着社会的发展,用户现在想...原创 2019-07-09 12:01:45 · 251 阅读 · 0 评论 -
设计模式之抽象工厂模式
在古代的时候,人们身上穿的衣服其实是人们自己使用织布机织的,随着社会的发展,一直到了现代社会,我们身上穿的衣服基本上都是在工厂里面做好了,直接拿到市面上去卖就好了,对于我们身上的衣服而言,由一开始的手工制作再到今天的工厂生产,这就是工厂模式。一、认识抽象工厂模式工厂模式主要分为三个:(1)简单工厂模式:我们的衣服在工厂里面去建造,这就是简单工厂模式(2)工厂方法模式:随着社会的发展,用户现...原创 2019-07-09 16:40:03 · 190 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式真的是很一个比较实用的设计模式,比如说日志恢复、断点重传等等。提供的就是一种“后悔药的机制”。让我们记录下来程序运行过程中的各种状态,还能够恢复。一、认识备忘录模式在这里我们以在电脑上下棋为例,通过备忘录模式能够记录下来所走的每一步棋,当突然断点的时候,还能够恢复到某一步,就是这样一个功能。其实备忘录模式的思想就是这样。我们从专业的角度来对其进行一个理解。备忘录模式就是在不破坏封...原创 2019-08-17 14:56:49 · 131 阅读 · 0 评论