![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【008】设计模式整理
呼噜噜哟
这个作者很懒,什么都没留下…
展开
-
设计模式——抽象工厂模式与工厂方法模式区别
首先来看看这两者的定义区别:工厂模式:定义一个用于创建对象的借口,让子类决定实例化哪一个类抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,...转载 2019-07-24 17:28:49 · 173 阅读 · 1 评论 -
设计模式——命令模式
假设某个项目组分为需求组(Requirement Group,简称RG)、美工组(Page Group,简称PG)、代码组(Code Group,简称CG),还有一个项目经理,刚开始的时候客户(甲方)很乐意和每个组探讨,比如和需求组讨论需求,和美工讨论页面,和代码组讨论实现,告诉他们修改这里,删除这里,增加这些等等,这是一种比较常见的甲乙方合作模式,甲方深入到乙方的项目开发中,我们把这个模式用类图...转载 2019-07-25 14:50:06 · 90 阅读 · 0 评论 -
设计模式——解释器模式
虽然目前计算机编程语言有好几百种,但有时人们还是希望用一些简单的语言来实现特定的操作,只需要向计算机输入一个句子或文件,就能按照预定的文法规则来对句子或文件进行解释。例如,我们想要只输入一个加法/减法表达式,它就能够计算出表达式结果。例如输入“1+2+3-4+1”时,将输出计算结果为3。像C++,Java或C#都无法直接解释类似这样的字符串,因此用户必须自定义一套文法规则来实现对这些语句的解释,即...转载 2019-07-25 15:58:28 · 159 阅读 · 0 评论 -
设计模式——迭代器模式
设计模式:迭代器模式一、前言 设计模式有很多,最典型的是GoF的23种设计模式,听起来很多,其实大部分我们都是见过的,按照常见度来分,最常用的差不多是六七个吧,因此,我们在学习的时候应该有轻重缓急之分,不能一视同仁,而应该抓住重点,将一些最常用的设计模式吃透了,那么我们在遇到一个实际问题的时候就能根据问题的需要来进行相应的取舍。学习是一个循环往复的过程,没有学过一次不再接触就能掌握的,一...转载 2019-07-25 16:19:23 · 140 阅读 · 0 评论 -
设计模式——中介者模式
定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。UML示例代码// 比如两个同事分别熟悉CTS和SElinux的问题,现在要找他们协助,就需要找PM协调// 同事之间不一定都认识,但PM肯定认识。所以PM作为中介者interface Mediator { public void send(...转载 2019-07-26 10:29:53 · 118 阅读 · 0 评论 -
设计模式——备忘录模式
备忘录,备份曾经发生过的历史记录,以防忘记,之后便可以轻松回溯过往。想必我们曾经都干过很多蠢事导致糟糕的结果,当后悔莫及的时候已经是覆水难收了,只可惜这世界上没有后悔药,事后我们能做的只能去弥补过失,总结经验。除非穿越时空,时光倒流,利用爱因斯坦狭义相对论,超越光速回到过去,破镜重圆。然而世界是残酷的,人类至今最快的载人交通工具连达到光速的万分之一都显得遥不可及,更别说超越了。光速,宇宙间...转载 2019-07-26 11:00:35 · 87 阅读 · 0 评论 -
设计模式——观察者模式
1、初步认识观察者模式的定义: 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。大白话: 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。2、这个模式的结构图3、可以看到,该模式包含四个角色抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,...转载 2019-07-26 11:36:16 · 70 阅读 · 0 评论 -
设计模式——状态模式
前言在我看来,状态模式在设计模式中算是比较复杂的了,而且这个模式并不怎么优秀本篇我将举两个例子来说明用不用状态模式对程序结构上的影响,以及状态模式所带来的好处由于状态模式和策略模式类图基本一致,因此文末将做一些对比情景引入首先我们先看一个没加状态模式的简单例子,支付宝里有个小游戏叫蚂蚁庄园,我在里面已经捐满了500颗爱心,获得了四个勋章,但是竟然有人都捐700颗爱心...转载 2019-07-26 14:13:28 · 85 阅读 · 0 评论 -
设计模式——策略模式
前言在软件领域中,设计模式作为一种经典的开发实践常常需要我们去深入的理解,而策略模式作为设计模式的一种,使用频率也是相对来说比较高的,在Java中,当我们学习TreeSet集合的时候,就采用了经典的策略模式的思想,本文主要讲解策略模式。概念其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发...转载 2019-07-26 14:27:26 · 85 阅读 · 0 评论 -
设计模式——模板方法
一、概述 模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。二、结构类图 三、解决问题 模板方法就是提供一个算法框架,框架里面的步骤有些是父类已经定好的,有些需要子类自己实现。相当于要去办一件事情,行动的流程已经定好了,但有些步骤需要自己去做,而有些步骤可能别人帮我们做了。就...转载 2019-07-26 15:43:37 · 92 阅读 · 0 评论 -
设计模式——职责链模式
前言设计模式是指导一个程序猿以更好的姿态处理一些问题,而不再像刚学编程的我们,只会使用if-else分支语句,或是使用硬干的骚操作完成需求。不使用设计模式,一来是代码逻辑会越来越晦涩难懂(到了某天你会发现自己也没办法看清楚所有逻辑),二来是代码维护成本越来越高(你的加班时间会越来越长),三来是可以装bility。基于这么多的好处,小盆友和大家一起讨论和分享下设计模式,让自己不再是一个坐在电脑前...转载 2019-07-25 14:19:42 · 101 阅读 · 0 评论 -
设计模式——代理模式
一、前言 代理模式或许我们都听说过,至少知道代理(Proxy)这个东西的,否则看这篇博客也没任何意义的。什么叫做代理,代理是代替服务器去接受请求者的请求的中间人。我们也听说过代理服务器这个东西,它的作用就是帮助客户端去请求客户端想要的资源,为什么要通过这个代理呢,那是因为客户端直接去访问服务器会被拒绝(防火墙屏蔽),而代理服务器则可以直接访问服务器的,因此客户端通过代理服务器,将请求的内容...转载 2019-07-25 14:01:13 · 120 阅读 · 0 评论 -
设计模式——Builder模式
设计模式:Builder模式一、前言 今天我们讨论一下Builder建造者模式,这个Builder,其实和模板模式非常的像,但是也有区别,那就是在模板模式中父类对子类中的实现进行操作,在父类之中进行一件事情的处理,但是在Builder模式之中,父类和子类都不用关心怎么处理,而是用另一个类来完成对这些方法的有机组合,这个类的职责就是‘监工’,规定了到底要怎么样有机的组合这些方法。在监工类...转载 2019-07-24 17:36:01 · 1155 阅读 · 0 评论 -
设计模式——单例模式
C#设计模式——单例模式的实现1. 什么是单例保证一个类只有一个实例的实现方法。2. 使用场景页面访问计数器需要保持状态的工具类需求很多,不能一一列举了3. 实现方非线程安全/// <summary> /// 单例模式的实现 /// </summary> public sealed class Singleton...转载 2019-07-24 17:56:23 · 86 阅读 · 0 评论 -
设计模式——原型模式
原型模式目录找工作难呐 打印机跑起来 复印机跑起来 原型模式的使用场景 构造函数的问题 浅拷贝找工作难呐 大家好,我原本是神剑山庄的铸剑师,名叫小赵,本来干的好好的,后来一时兴起,睡了三少爷的小姨子,与其一直提心吊胆,干脆来个逃之夭夭。 但是,我也要吃饭的呀,工作也得找,神剑山庄去不得,还有断剑山庄、藏剑山庄、荡剑山庄、等等等等大型企业,说不定这次跳槽,能跳出个...转载 2019-07-24 18:04:04 · 81 阅读 · 0 评论 -
设计模式——简单工厂模式&工厂方法模式&抽象工厂模式
简单工厂模式&工厂方法模式&抽象工厂模式的区别及优缺点及使用场景工厂模式是设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类。也有把工厂方法模式划分到抽象工厂模式的,认为工厂方法是抽象工厂模式的特例的一种,就是只有...转载 2019-07-24 18:18:48 · 87 阅读 · 0 评论 -
设计模式——桥接模式
桥接模式(Bridge)是一种结构型设计模式。Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。桥接模式的角色和职责:1.Client 调用端这是Bridge模式的调用者。2.抽象类(Abst...转载 2019-07-25 09:45:43 · 79 阅读 · 0 评论 -
设计模式——组合模式
目录一、什么是组合模式二、组合模式的适用性三、组合模式的结构四、组合模式的安全性和透明性五、组合模式的优缺点六、总结一、什么是组合模式组合(Composite)模式是一种对象的行为模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式的本质:统一叶子对象和组合对象。组合模式的目的:让客户端不再区...转载 2019-07-25 10:01:55 · 224 阅读 · 0 评论 -
设计模式 ——装饰者模式
装饰者模式装饰者模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。在装饰者模式中,为了让系统具有更好的灵活性和可扩展性,我们通常会定义一个抽象装饰类,而将具体的装饰类作为它的子类角色Component(抽象构件):它是具体构件和抽象装饰类的共同父类,声明了在具体构件中实现的业务...转载 2019-07-25 10:29:55 · 123 阅读 · 0 评论 -
设计模式——外观模式
医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。 首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须...转载 2019-07-25 11:03:07 · 86 阅读 · 0 评论 -
设计模式——享元模式
一、什么是享元模式 说到享元模式,第一个想到的应该就是池技术了,String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。 比如我们每次创建字符串对象时,都需要创建一个新的字符串对象的话,内存开销会很大,所以如果第一次创建了字符串对象“adam“,下次再创建相同的字符串”adam“时,只是把它的引用指向”adam“,这样就实现了”adam“字...转载 2019-07-25 11:30:07 · 85 阅读 · 0 评论 -
设计模式——访问者模式
生老病死乃常态,是我们每个人都逃脱不了的,所以进医院就是一件再平常不过的事情了。在医院看病,你首先的挂号,然后找到主治医生,医生呢?先给你稍微检查下,然后就是各种处方单(什么验血、CD、B超等等,太坑了。。。。),再然后就给你一个处方单要你去拿药。拿药我们可以分为两步走,第一步,我们要去交钱,划价人员会根据你的处方单上面的药进行划价,交钱。第二步,去药房拿药,药房工作者同样根据你的处方单给你相对应...转载 2019-07-26 17:45:37 · 123 阅读 · 0 评论