![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 60
Scofield-
闻道有先后术业有专攻如是而已
展开
-
设计模式之备忘录模式
什么是备忘录?今天要干什么,拿个小本子,写一下,记录下来,等中午睡过觉,突然忘记了要准备做什么、?怎么办?没关系,拿出本,看一下,就想起上午要准备干的事情了。而备忘录模式,其实也很类似这个过程。其中,有个原始的类,他里面有需要保持的状态。还有一个备忘录类,他就是用来保持刚刚那个原始的类的状态。最后,还有一个管理备忘录的类。负责管理备忘录类。所以,大家一般原创 2013-12-31 15:36:08 · 538 阅读 · 0 评论 -
设计模式之组合模式
关于组合模式,大部分都是写的“部分——整体“的关系,部分组成了整体,把部分和整体可以看成一体。可以把复杂的对象看做简单的对象。不过,再怎么说,我也觉得,这个模式还是没有深入的理解它的含义,印象不深刻。不过先说说我的认识。在数据结构中,有树这种结构,尤其是特殊的二叉树,由此——产生了”组合模式“。组合模式=树形结构+递归。看下组合模式的组成。1)原创 2013-12-24 16:20:34 · 831 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式,这个模式真的很容易懂,啥叫装饰?当然是你住进新房子了,要装修啊,装饰是否必要?当然不是必要的,你不装修,也可以住房子、、、只是。。。为什么要装修?装修了环境,舒服了,人也心情好了,当然高兴啊装修改变了你的房子的结构了吗?当然没有,你房子在哪里还是在哪里,墙难道在装修之后就变成不是墙了吗???不知道,大家注意到上面这几个问题没有。其实,装饰模式原创 2013-12-24 17:04:35 · 759 阅读 · 0 评论 -
设计模式之外观模式
外观模式,Facade,翻译为,外观,正面,虚伪,假象的意思。也就是说外观模式,只是一种简单对以前的类,或者子系统进行封装,一致对外提供统一接口的,并没有在原来的基础上增加任何的行为。如果,在没有设计外观模式之前,子系统之间相互依赖,客户端调用的时候,就会相互交错,耦合性高,有了外观系统,可以把他们解耦。外观角色(Facade):是模式的核心,他被客户client角色调用,知道原创 2013-12-25 17:00:42 · 562 阅读 · 0 评论 -
设计模式之桥接模式
关于这个桥接模式,最常见的就是jdbc中的driver,在不需要修改上层代码的情况下,通过加载不同的驱动器,可以使用不同 的数据库。而网上,都说,所谓桥接模式,就是区分,抽象和具体实现的,可以实现解耦,并且还可以实现动态结合,尤其对于,有多维度变化的特征,适合用此模式。来看图抽象类(Abstraction):定义抽象类的接口,维护一个指向Implementor类型对象的原创 2013-12-25 16:19:25 · 637 阅读 · 0 评论 -
设计模式之享元模式
啥是个享元模式?Flyweight Pattern英文,直接翻译就是,羽量级模式或者蝇量级模式等等,虽然可以含蓄的表现出使用此模式达到的目的,但是还是没有抓住此模式的关键,当初大牛翻译成元,其实就是想表达,颗粒度这种概念。享元模式的定义为:采用一个共享来避免大量拥有相同内容对象的开销。这种开销中最常见、直观的就是内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象。在名字和定义中原创 2013-12-25 17:39:11 · 546 阅读 · 0 评论 -
设计模式之策略模式
所谓策略模式,就是说实现一件事情有多种算法。而客户端需要对这些算法进行选择。常规做法有2种:1.你可以把这些实现的算法,写到一个类里面,然后对外提供接口,调用你所需要的。可是。。。?这有个明显的缺点就是,将来,你多了一种更好的算法,那么你必然要改变原来的这个类,需修改封装好的,不符合开闭原则。2.用if...else判断来进行选择具体哪个算法,可是。。。?这也有上面的问题,多了原创 2013-12-26 15:24:06 · 691 阅读 · 0 评论 -
设计模式之模板模式
模板,之所以称之为模板,就是说明是有一个固定的框架,所有人都可以用它,里面大部分内容都一样,只是里面可变的部分,是需要你自己填写的。整个过程,就是,定义一个一个抽象类,把固定的部分,写好,可变的部分留在子类去实现,这样父类可以调用子类的具体方法。有人说,这就是“好莱坞原则”,也就是ioc,控制反转,一种解耦的方式。abstract class Father{final 框架不变方法{原创 2013-12-26 16:25:23 · 585 阅读 · 0 评论 -
设计模式之责任链模式
什么是个责任?当然是有事,不会推卸责任啊为什么有个链?因为你必须知道,这个责任得推给谁,一级一级往下推。举个例子来说明,你们的老师(相当一个request)要求你们小组完成一项任务,你们小组A,B,C三个人,那你们怎么办?但是老师,其实并不关注你们谁会做,可是,他关注你们做完没有,做的怎么样?A来看这个任务,他发现他不会,可是他知道B的水平比他高,他不会就推给了B,让B来做原创 2013-12-27 17:19:11 · 508 阅读 · 0 评论 -
设计模式之观察者模式
接下来的4种模式,都是2个类之间的关系,不像前面讲的策略+模板,它们是通过继承的方式实现。所谓观察者,就是我们常见的,发布/订阅,模式,当你关注别人的动态以后,当ta本人发布新状态心情以后,会把这个状态更新到你的空间。因为你订阅了人家呗。也就是一个对象变化会影响一大群依赖这个对象的模式,2个类之间是平行关系,没有继承。看看观察者模式的组成部分。1) 抽象目标角色(原创 2013-12-27 15:24:11 · 575 阅读 · 0 评论 -
设计模式之代理模式
代理,顾名思义,就是有个中间人,网上看到别人举的例子,印象深刻,拿过来来分享,就是,你来北京租房,你怎么租?第一反应,当然是找个中介啊,因为他手里有房源消息。从这个代理可获得,租房价钱信息。如果,你觉得还不够好,那就是。。。如果你遇到了官司,你必须请个律师,因为律师毕竟专业更懂法律,更能表达你的意思,其中,律师的角色,就是你的代理。代理有什么作用?代理可以起到设置权限,保护原创 2013-12-24 17:37:15 · 596 阅读 · 0 评论 -
设计模式之适配器模式
什么是适配器???就根据它的含义,来想它要表达的意思,适配,使之相配合,也就是转换接口,把接口A转换成接口B。先说一下,4个角色,不明白,没关系,看下面的情景,可以帮助你理解,适配器的概念。•目标角色(Target):— 定义Client使用的与特定领域相关的接口。• 客户角色(Client):与符合Target接口的对象协同。• 被适配橘色(Adaptee):定义一个已经原创 2013-12-24 15:15:02 · 593 阅读 · 0 评论 -
设计模式之命令模式
关于命令模式,其实,很简单,就是2个角色,谁发出命令,谁接受?比如说,将军发出命令,告诉,给我炸了对面的桥,那么士兵,就接到命令,去执行,具体怎么做?但是,有可能将军一个一个亲口,告诉,是哪个士兵,给我具体怎么做吗?绝对不可能,那将军不累死,中间肯定有个传递信息的,他知道将军的命令。这个例子,就很好的说明了,命令模式,也就是对请求和接受的解耦。使2者之间不直接接触。还有原创 2013-12-31 15:04:46 · 565 阅读 · 0 评论 -
设计模式之状态模式
啥是状态、?就好比你在qq空间,人人发状态一样,你发不同的状态,你的同学,朋友都可以看到,再比如说,你qq的状态,不同的状态,隐身,忙碌,离开等等,当别人对你联系的时候,会自动有不同的回复。所以,状态模式,解决的问题,就是,不同的状态可以有不同的行为,把具体的行为进行封装。扩展性比较好,避免了使用大量的if -else语句,因为根据不同的状态,直接可以调用相应的行为,而不再需要进行判断,非常n原创 2014-01-03 09:10:47 · 634 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式,不太好讲,因为这个不太好举例子,所以印象也不是很深刻。但是,这个模式它强调是稳定的数据结构,以及经常需要发生变化的操作,操作这种数据结构。体现在类里面,就是,一个已经做好的类,封装好的东西,现在增加了一种操作,那你怎么办?1,你可以重新写这个类,直接加个操作。可是,这样违背了“开闭原则”,当你这个操作经常发生变化时,就是不可行的。2.你该把这个操作,单独的写一个类,对操原创 2014-01-03 09:55:25 · 523 阅读 · 0 评论 -
设计模式之中介模式
在前面的学习模式的时候,说到,代理模式,我当时用中介举例,有点不合适,因为在设计模式中,原来专门就有一个模式就是中介模式。其实,代理模式,还是它最基本的含义,代理,就是生产商,生产处东西,要卖给你,需要代理商,代理商决定到底卖不卖给你,对于,他是否卖给其他人,你和其他人之间是没有任何关系的,你们不进行通信。而这里的中介模式,则不同,为什么?他是个正直的中间人,比如,你要从房子中介里租房子,原创 2014-01-03 11:03:22 · 701 阅读 · 0 评论 -
设计模式之解释器模式
今天,终于,迎来了,设计模式的最后一种模式,也是基本不会用的模式。都说,解释器,是用来开发编译器,才会用到的语言。所以,你实际中会很少碰到去解析语言的文法。解释器,就是用来解释语言的。有个环境上下文。Context,负责获得数据。有个Expression的表达式接口,里面有解释方法,对于不同的子类,会有不同的解释。下次当你使用Plus类,就相当于+,minus相当于-,原创 2014-01-03 12:37:07 · 537 阅读 · 0 评论 -
设计模式之单例模式
看了这么多有关单例模式的讲解,差不多,主要说了2类,懒汉模式和恶汉模式。再加上“单例邪恶论”,如果再挖的深一点就是所谓的,双重校验,还有什么枚举类,另外还有静态内部类。也就这么多内容,具体深入的资料,后面贴个链接自己看。了不了解单例,也主要是考察2类:1.饿汉模式顾名思义,也就是很急,因为饿嘛,所以每次在内的最开始用创建一个实例,然后再提供一个公共的方法来访问这个实例。看代码就懂了原创 2013-12-23 14:59:55 · 525 阅读 · 0 评论 -
设计模式之工厂模式
准备这段时间,每天看看博文,认真学习一下设计模式,因为对于复杂的业务来说,确实需要了,不然,很多东西看不太懂。今天先聊,工厂模式,我的理解,做个笔记。工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 这三种模式从上到下原创 2013-12-23 13:42:43 · 585 阅读 · 0 评论 -
设计模式之原型模式
关于原型模式,这个网上的介绍相对于其他,就少很多,也就是意味着,这并不复杂。因为他是一种创建模式,那么你除了通过new产生对象,有没有办法,再产生一个对象呢?答案就是,原型,类似于你用ctrl+c加ctrl+v的效果,复制粘贴,之后还能对其修改,尽管这个例子不太恰当,可是原型就是通过复制原来的对象,产生一个新的对象,然后,在不影响原来的对象的基础上,进行各种操作,就类似《让子弹飞》中的黄四爷替原创 2013-12-23 17:36:27 · 616 阅读 · 0 评论 -
设计模式之建造模式
建造模式是之前讲的模式中,最为简单的易懂的一种模式。就好比堆积木一样,你可以拿最简单的零件组成一个超级复杂的机器人,或者另外的什么好玩具。而什么,本来就很简单的横竖,就能产生这么神奇的效果呢?这就是建造模式。这个通过一个身边的例子,会马上明白这个过程,那就是,你去KFC买东西吃。典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童原创 2013-12-23 16:49:10 · 1023 阅读 · 0 评论 -
设计模式之迭代模式
迭代器,iterator,这个相信熟悉java的同学肯定不陌生,因为它就是应用在集合当中的遍历里面的元素。这里有2个类,集合类+迭代器类。而迭代器模式的出现,很好的解决了上面两种情况的弊端。先来看下迭代器模式的真面目吧。迭代器模式由以下角色组成:1) 迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。2) 具体迭代器角色(C原创 2013-12-27 15:57:07 · 542 阅读 · 0 评论