![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Inevitability
任何时候WHY比WHAT都重要!
展开
-
访问——访问者模式
访问者模式 Visitor Pattern:访问者模式,是GoF23种设计模式中属于行为型模式的一种。 访问者模式的定义为:表示一个作用于某对象结构中的个元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 实际上来说,就是定义了一个访问者类,而各个元素对象接收这个访问者对象进行操作,如果想要换成不同的操作,简单的修改访问者对象即可让这些元素对象执行不同的操作。结构...原创 2019-12-31 10:16:44 · 354 阅读 · 1 评论 -
文法——解释器模式
解释器模式 Interpreter Pattern:解释器模式,是GoF23种设计模式中属于行为型模式的一种。 解释器模式是用于:定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 嗯,通俗点说就是,给出一个解释语句的规则,然后用这个规则去解释语句。 比如说:规定句子的组成为主语+谓语+宾语。那么对于用户给出的任意一句语句,都是用这个规则去解释...原创 2019-12-30 16:25:15 · 133 阅读 · 0 评论 -
共享定制化——享元模式
享元模式 Flyweight Pattern:享元模式,是GoF23种设计模式中属于结构型模式的一种。 享元模式的思想在于享和元两个字:享是共享的意思,而元字就是对象的意思。所以享元说白了就是共享对象(注意这里所说的对象是一个抽象的概念,可以理解为一个类) 所以,享元模式的作用就可以从它的名字中体现出来了。享元模式的作用主要用于减少创建相同对象的数量,达到减少内存占用提高性能的目的。...原创 2019-12-26 16:55:27 · 186 阅读 · 0 评论 -
统一管理——中介模式
中介者模式 Mediator Pattern:中介者模式,属于GoF23种设计模式中属于行为型模式的一种。 中介者模式,顾名思义,就是有一个中介的意思,和我们现实生活中的什么房屋中介啊,出国留学的中介啊是一个意思,又或者高大上一点的联合国也是充当着一个中介者的角色。 中介者模式呢,就是用一个中介来封装其他所有对象的交互,让对象之间不会直接进行显示的相互调用,而是通过中介对象完成,达到的...原创 2019-12-20 10:55:44 · 260 阅读 · 0 评论 -
奖学金——责任链模式
责任链模式 Chain of Responsibility Pattern:责任链模式,是GoF23种设计模式中属于行为型模式的一种。 责任链模式的主要就是结构是一个链式的结构,一环扣着一环形成一个处理请求的处理链,处理链又不同的对象构成,每个对象可以选择处理或者不处理这个请求,如果处理则这个链就断了,如果不处理就一直延续到下一个对象直到有一个对象处理这个请求为止。 简单的说,责任链模...原创 2019-12-20 10:12:36 · 129 阅读 · 0 评论 -
开炮——命令模式
命令模式 Command Pattern:命令模式,是GoF23种设计模式中属于行为型模式的一种。 命令模式:将请求封装为一个对象,并传给调用对象。调用对象寻找可以处理该命令的合适的处理对象,并把该命令传给相应的处理对象执行命令。 命令模式的本质就是将发出请求和处理请求两者分开,一方只负责发出请求,另一方只负责处理请求。达到的目的就是将行为发起者和行为处理者两者解耦合。结构 结...原创 2019-12-19 10:33:00 · 369 阅读 · 0 评论 -
多维度思考——桥接模式
桥接模式 Bridge Pattern:桥接模式,是GoF23种设计模式中属于结构型模式的一种。 桥接模式通过在抽象和具体实现之间创建桥接的结构用以实现两者的解耦合。抽象部分和实现部分是完全分离的,两者都可以独自变化而不影响对方。 桥接模式的关注点在于抽象和实现两者之间的关系,并不是传统上所体现的抽象类和他的派生类这样的的关系(或者说是父类和子类这样的关系,而是说是一种抽象类具体的表达...原创 2019-12-18 11:25:55 · 409 阅读 · 0 评论 -
一分为六——单例模式
单例模式 Singleton Pattern:单例模式,是最简单的设计模式之一,但是这里的最简单只是结果简单,因为就只有一个角色而已;实现也是比较简单的,但是麻雀虽小五脏俱全,简简单单的的单例模式的实现的方式确实五花八门的,有多种符合各种场景下的实现方式。 单例模式是GoF23种设计模式中属于创建型模式的一种。结构 单例模式很简单,只有一个角色对象,就是它自己:Singlet...原创 2019-12-16 18:10:03 · 154 阅读 · 0 评论 -
遍历——迭代器模式
迭代器模式 Iterator Pattern:迭代器模式,是GoF23种设计模式中属于行为型模式的一种。 迭代器的模式已经是很多高级编程语言中常用的设计模式了,体现的位置也是方方面面都可以,比如最常用的for循环就是如此。 在JAVA中,有增强for循环,使用到的就是迭代器模式for(Demo demo : demos){ // TODO} 在Python中,有着fo...原创 2019-12-16 16:23:48 · 266 阅读 · 0 评论 -
层级结构——组合模式
组合模式 Composite Pattern:组合模式,也可以称为部分整体模式。是GoF23种设计模式之中属于结构型模式的一种。 组合模式是依据树形结构来组合对象体现出部分-整体的层次结构,组合模式hi将一组相似的对象当成一个单一的对象,使得对单个对象和组合对象的使用具有一致性。结构 结合类图简单的分析一下,组合模式共有三个对象:组合模型对象(Component):为组合中...原创 2019-12-16 15:32:59 · 1564 阅读 · 0 评论 -
重生啦——备忘录模式
备忘录模式 Memento Pattern:备忘录模式,在GoF23种设计模式中属于行为型模式的一种。 备忘录模式的定义是:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 简单一点的说呢,就是保存一个对象的某个或者多个状态,然后当有需要的时候恢复对象被保存下来的状态,有点类似还原点的作用,更直白的说的话就是玩游戏的时...原创 2019-12-11 15:15:33 · 115 阅读 · 0 评论 -
搭个桥——适配器模式
适配器模式 Adapter Pattern:适配器模式,在GoF23种设计模式中属于结构型模式的一种。 适配器模式的作用就是提供将两个不兼容的事物可以进行合理正确的使用的功能。注意一个关键字,不兼容,意思是用户想要使用这个东西,但是和你提供的接口不兼容导致用户使用不了,如果直接不能使用那就会是用户体验不好,这个时候需要的就是通过一个适配器来让这个两个不兼容的东西变成兼容,可以使用。结构...原创 2019-12-09 17:30:28 · 81 阅读 · 0 评论 -
ON/OFF——状态模式
状态模式 State Pattern:状态模式,是GoF23种设计模式中属于行为型模式的一种。 状态模式是允许通过改变一个对象的内部状态从而改变这个对象的行为,看起来就像是改变了这个对象的实现方式一样。结构 结合类图分析一下,状态模式一共有三个角色:抽象状态类:这是一个接口(或者抽象类),用于封装与Context的一个特定状态相关的行为。具体状态类:每一个具体的状态实现类都实...原创 2019-12-09 16:28:00 · 1201 阅读 · 0 评论 -
一身帅气西装——抽象工厂模式
抽象工厂模式 Abstract Factory Pattern:抽象工厂模式,是GoF23种设计模式中属于创建型模式的一种,用于创建一族的产品对象。 需要理解什么是产品族(也可以说是产品簇):产品族是满足不同客户个性化需求的一组相关产品,是能够满足不同客户对产品特殊特征和功能需求的相关系列产品集合构成。 简单的用个例子说一下,比如登录网页的模板,很简单,一个输入文本框,一个密码文本框,...原创 2019-12-09 12:46:34 · 173 阅读 · 0 评论 -
来一场棒球比赛——观察者模式
观察者模式 Observer Pattern:观察者模式,又叫做发布—订阅模式,在GoF23种设计模式之中属于行为型模式的一种,是对于对象之间存在一对多的对于关系的时候使用的一个模式。 这种一对多的关系体现的方面是,当一个对象发生了变化,其他的所有依赖于这个对象的对象本身也会实时的得到通知并且进行更新自己的操作,达到同步更新的效果。结构 通过简单的类图分析一下,观察者模式一共有四个...原创 2019-12-06 16:36:52 · 271 阅读 · 0 评论 -
RPG——建造者模式
建造者模式 Builder Pattern:建造者模式,也可以称为生成器模式,是GoF23种设计模式之中属于创建型模式的一种。主要是提供一个最佳的创建对象的方式。 建造者模式,简单的说就是将创建对象的流程进行了一个抽象;抽象出来的是构建流程,通过这一套流程我们可以构建这个对象的不同的表现形式。 也就是说呢,建造者模式将对象的构建/创建过程和最终的表现形式发生了分离,可以让使用者通过同一...原创 2019-11-27 15:33:32 · 200 阅读 · 0 评论 -
黑盒——外观模式
外观模式 Facade Pattern:外观模式,是GoF23种设计模式之中属于结构型模式的一种。外观模式的定义就是为一组接口外面在包装一个一致的接口,通过这个一致的接口再去访问被包装的一组接口。 说起来可能是有点绕,但是可以把这个外观模式想象成黑盒,类比于熟悉的黑盒测试,当我们需要对一个模块进行功能测试的时候,使用黑盒测试,此时我们是不知道这个模块的具体实现的代码的,很有可能的是我们都...原创 2019-11-26 15:20:48 · 378 阅读 · 0 评论 -
把大象装冰箱要几步呢——模板方法模式
模板方法模式 Template Pattern:模板方法模式,也可以称为模板模式。属于GoF23种设计模式中行为型模式的一种。 给个书面定义:定义了一个操作中的算法骨架,而将一些步骤延迟到了子类之中实现。让子类呢可以在不改变大致的骨架之下,重新定义算法中的一些步骤。 简单的理解呢,其实和我们DIY配置了自己的电脑之后的组装一样,我们首先会选择一款合适的主板,这个主板呢就是一个大大的模...原创 2019-11-18 14:55:07 · 585 阅读 · 0 评论 -
浅/深克隆——原型模式
原型模式 Prototype Pattern:原型模式属于GoF23种设计模式中的创建型模式的一种,提供的是一种最佳的重复创建对象的方式。 简单的理解呢,原型模式的作用就是用一个已经存在了的对象,再去创建另外一个相同的对象,并且不需要知道这个对象创建需要什么,或者说是怎么创建出来的,而是直接拿到这个新的对象,再说的简单点就是克隆了。结构 原型模式这个模式的概念还是很简单的,可以简...原创 2019-11-17 18:43:23 · 264 阅读 · 0 评论 -
专卖店——工厂方法模式
工厂方法模式 Factory Method Pattern:工厂方法模式是属于GoF23中设计模式中创建型设计模式的一种,用来创建实例对象的。 可以给出对于工厂方法模式的定义:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。 简单的说呢,嗯,就是让用户直接对接具体“工厂”,例如说用户想要买水果,那就给他一个水果店的地址直接让他去,用户要买菜,那就给他一个菜市场的地址也...原创 2019-11-16 12:58:13 · 139 阅读 · 0 评论 -
找房子有点难——代理模式
代理模式 Proxy Pattern:代理模式是GoF23中设计模式中,属于结构型模式的一种。 关于代理模式的定义官方给出的是:为其他对象提供一种代理以控制对这个对象的访问(好像也是可以理解一点儿的吧。) 笔者自己的理解方式呢,代理,代理嘛,用个不恰当的比喻来说的话,哈哈,那就是叫家长啊,有木有,老师们的终极绝招之一啊,怎么说呢,就是老师要叫家长的需要通知我们自己,然后让我们回家去把...原创 2019-11-15 17:53:50 · 123 阅读 · 0 评论 -
加糖加冰加牛奶——装饰模式
装饰模式 Decorator Pattern:属于GoF23种设计模式中结构型设计模式的一种,又被称为装饰者模式。 简单的说,装饰模式/装饰者模式就是给一个现有的类,在不改变这个类的情况下,动态的给这个类进行扩展,添加新的东西,比如说添加新的功能。 动态的意思也就是说不需要这个类创建的时候指定,完全可以等这个类创建完成了之后,已经完全成为了一个“活蹦乱跳”的对象了之后,再给他添加新的...原创 2019-11-14 17:05:37 · 148 阅读 · 0 评论 -
锦囊妙计——策略模式
策略模式 Strategy Pattern:策略模式是GoF23中设计模式中属于行为型设计模式的一种。 策略模式的关键点就在于策略两字,策略是一种方法,一种方式,一种计策。用术语来讲的话,可以将其理解为算法,不同的策略也就是不同的算法。 策略模式的作用呢,就是使得用户在执行某个操作的时候得到一个结果,而这个结果可能是由不同的算法所得到的,但是用户并不知道这些,算法的改变影响不到用户自己...原创 2019-11-13 18:20:49 · 217 阅读 · 0 评论 -
简单的简单工厂模式
简单工厂模式 Static Factory Method:属于创建型模式的一种,又可以被称为静态工厂方法模式,但是不属于GoF23种设计模式之一。结构 对于简单工厂模式的结构,给出一个简易的UML类图: 从图片中,可以知道简单工厂模式的组成分为三个部分:第一个也就是工厂啦,简单工厂模式说到底也是一个工厂模式嘛,工厂自然是必不可少的。第二个则是一个抽象类(当然,也可以设计成一个...原创 2019-11-13 14:29:38 · 101 阅读 · 0 评论