设计模式
Crazypokerk_
这个作者很懒,什么都没留下…
展开
-
设计模式(一)单例模式
我是皇帝我独苗!Singleton Pattern(单例模式):确定某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。基于单例模式有两种解决方案:以下代码适用于多线程环境下,volatile是为了保证防止指令重排序,双重验证是为了保证对象只被一个线程初始化一次。/* 基于volatile的解决方案 */public class DoubleCheckedL...原创 2019-04-04 10:33:36 · 110 阅读 · 0 评论 -
设计模式(十一)享元模式
引子享元是什么意思?第一次听说这个概念,心里十万个为什么。共享啥?元是啥?元素?甚是不解,到底什么鬼!?既然从字面意思看不出什么,那就先来看看官方定义。官方定义:Flyweight pattern(享元模式)是池技术的重要实现方式。使用共享对象可有效地支持大量的细粒度的对象。享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,...原创 2019-04-15 16:02:39 · 189 阅读 · 0 评论 -
设计模式(三)命令模式
引子在软件开发系统中,常常出现“方法的请求者“与“方法的实现者”之间存在紧密的耦合关系。这不利于软件功能的扩展与维护。例如,想对行为进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与方法的实现者解耦?”变得很重要,命令模式能很好地解决这个问题。在现实生活中,这样的例子也很多,例如,电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者),还有计算机键盘上的“...原创 2019-04-13 20:52:43 · 147 阅读 · 0 评论 -
设计模式(十二)责任链模式
引子今天来看看什么是责任链模式。责任链,从字面意思可以看出,不同的责任连起来,成为一条责任链,针对不同的情况,在这条链上寻找对应的处理办法。官方定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。责任链模式的重点是在“链”上,由一条链去处理相似的请求,在链中决定谁来处理这个请求,并返回相应的...原创 2019-04-16 20:34:08 · 166 阅读 · 0 评论 -
设计模式(八)装饰模式
引子嘛是装饰?起装扮、锦上添花的功能。现如今,买个什么吃的、喝的、玩的,先不说好吃不好吃,好玩不好玩,包装就非常吸引人。各路厂家为了装饰自己的产品是挖空了心思赚消费者的钱。今天就看看这个装饰模式,用生活中的例子来看看这个模式是怎么运用的?官方定义:DecoratorPattern(装饰者模式)动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性地替代方案。现在我们来模拟一...原创 2019-04-09 09:57:14 · 157 阅读 · 0 评论 -
设计模式(二)观察者模式
引子观察者模式,就是观察别人在干嘛,作为观察者,被观察者的一举一动都要了如指掌,作为被观察者,该干嘛干嘛,并不知道自己的一切行为都以为暴露在别人的监控之下。是不是有点谍战的意思。我们就用古代三国演义里诸葛亮和间谍来类比,演示一下什么是观察者模式。来看看官方定义:Observer Pattren(观察者模式)也叫做发布订阅模式,定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所...原创 2019-04-12 09:38:54 · 172 阅读 · 0 评论 -
设计模式(七)原型模式
引子第一次听到这个模式深感困惑,原型是几个意思?原形毕露???心里无数个黑人问号。但仔细想想,原型是不是保留原有的形态,而我要的就是这个原有的形态呢?那么拿原型来做什么呢?肯定不能是复制无限个原型,好像没什么用处,那我可不可以把复制来的原型,在此基础上改造改造,得到我想要的最终产品呢?官方定义:Prototype Pattern(原型模型)的简单程度仅次于单例模式和迭代器模式。用原型实例指...原创 2019-04-08 19:48:23 · 147 阅读 · 0 评论 -
设计模式(十)适配器模式
引子适配器模式,顾名思义,家用电器中就有很多适配器,比如电源适配器,也就是我们俗称的充电器,USB转接适配器,也就是数据线,连接电脑屏幕的HDMI线也算是适配器。再比如说,你去欧洲旅游,就要买欧标的电源转换头,去美国,就要买美标的电源转换头。可以看出,适配器的功能就是起转换作用。上面图示,说明了适配器的作用。本来三角肯定是和圆形不可能兼容的,但是有了适配器的存在,不用修改现在的,也不用...原创 2019-04-11 10:28:51 · 172 阅读 · 0 评论 -
设计模式(九)策略模式
引子策略模式,从命名上来看,应该是对待不同的情况,使用不同的策略,不同的对策。我们都有考过驾照,但是驾照分很多等级,有A照、B照、C照之分。每种驾照对应不同的驾驶车型,那么我们就以小王考驾照为例子,实现一下策略模式。官方定义:Strategy Pattern(策略模式)也是一种比较简单的模式,也叫做政策模式,定义一组算法,将每个算法都封装起来,并且式它们之间可以互换。来看类图抽...原创 2019-04-10 21:16:49 · 196 阅读 · 0 评论 -
设计模式(六)代理模式
引子代理模式?代理是个什么意思,帮我干事,帮我做我不想做的。来,老哥,帮我取下外卖!快帮我打一会儿彩虹六号,我上个厕所!总而言之吧,代理就是找个人去帮你完成你像完成的事情。官方定义:Proxy Pattern代理模式是一个使用率非常高的模式,为其他对象提供一种代理以控制对这个对象的访问。来先看看类图:抽象主题类public interface R6GamePla...原创 2019-04-06 11:08:29 · 138 阅读 · 0 评论 -
设计模式(五)建造者模式
引子首先,思考为啥叫建造者?造东西吗?造车造船造楼房,都可以叫建造。由字面意思可以看出,建造者就是你要什么,我给你造什么,充分满足客户需求,客户第一嘛!我们可以自立为导演,客户说让造什么,咱就自己导演一个什么,总之,给客户搞出来就行了。先来看官方定义(最为难懂)Builder Pattern(建造者模式):也叫做生成器模式,定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过...原创 2019-04-05 11:21:18 · 156 阅读 · 0 评论 -
设计模式(四)模板方法模式
引子先来想想第一个问题,为什么叫模板方法呢?答:模板模板,肯定就是有一套固定的模式,说白了就是套路,一样的套路,似曾相识的感觉。同样,如果我们在开发中,同样的套路出现N多次,必然导致项目难以维护,就需要对设计产生严重怀疑,架构师要不明确说明为什么相同的逻辑要出现两次或更多次,要不然,嘿嘿,有你好看的!因为大量的重复性代码会遍布整个项目之中,所以,为了将这个套路提取出来,这时候我们就可以...原创 2019-04-04 11:31:03 · 113 阅读 · 0 评论 -
看似简单并不简单的单例模式
引言今天无意间在公众号上看到一篇文章,文章中问到了一个问题,如何在不使用 synchronized 和 Lock 锁的情况下,实现单例模式?说实话,在此之前,只知道单例模式的两种实现模式,其他的压根见都没见过。今天算是开了眼界了,还是才学疏浅,路还很长啊!那就借此机会,趁热总结。常见的单例模式基于volatile的解决方案这种模式其实就是我们俗称的懒汉模式,也叫双重检查锁定。在多线...原创 2019-04-24 21:45:42 · 281 阅读 · 0 评论