设计模式
the_fool_
这个作者很懒,什么都没留下…
展开
-
【设计模式】【总】设计模式分类与原则概括
简要设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。总体来说设计模式分为三大类:分类创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模...原创 2017-07-03 18:51:46 · 711 阅读 · 3 评论 -
【设计模式】行为型06命令模式(Command Pattern)
命令模式 个人理解:命令模式,本质上是一种多层次的封装。 好处:降低耦合,扩展极其方便。 以下一段文案摘抄自:http://www.runoob.com/design-pattern/command-pattern.html个人有些难以深入理解,待日后细细体会: 意图:命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开。 ...原创 2018-05-05 12:45:20 · 363 阅读 · 0 评论 -
【设计模式】结构型05组合模式(Composite Pattern)
组合模式(Composite Pattern) 意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。何时使用:1、您想表示对象的部分-整体层次结构(树形结构)。2、您希望用户忽略组合对...原创 2018-05-18 18:15:57 · 114 阅读 · 0 评论 -
【设计模式】行为型10中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern) 这里笔者完全参考了:http://www.runoob.com/design-pattern/mediator-pattern.html,案例精简清晰,直指核心-中介对象。多处直接转载,特此说明。 定义:通过一个终结者来组织对象的交互。 意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使...转载 2018-05-14 18:28:53 · 126 阅读 · 0 评论 -
【设计模式】行为型11解释器模式(Interpreter Pattern)
解释器模式(Interpreter Pattern) 解释器模式应用场景比较小,也没有固定的DEMO,中心思想就是自定义解释器用来解释固定的对象。 定义:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 DEMO的话随便转载了一个写的比较清晰的博主的博客,博主信息如下(代码做了微小修改): @Author 风一样的...转载 2018-05-14 19:13:45 · 136 阅读 · 0 评论 -
【设计模式】结构型06享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern) 首先吐槽下这个名字,享元?共享元素的话感觉还是蛮好的~但是这个英文。。。意图:更好的重用、管理对象,减少内存开销,节约资源。主要解决:在有大量重复对象时,通过抽象,对对象统一管理。何时使用:1、系统中有大量对象。2、这些对象消耗大量内存。3、这些对象的状态大部分可以外部化。4、这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组...原创 2018-05-21 18:42:04 · 94 阅读 · 0 评论 -
【设计模式】行为型07备忘录模式(Memento Pattern)
参考地址:http://www.runoob.com/design-pattern/memento-pattern.html对原文总结调整,以及修改代码以更清晰的展示:备忘录模式(快照模式): 定义:顾名思义,备忘录模式是在不破坏封装性的前提下,通过备忘录对象,记录一个对象的内部状态,并在该对象之外保存这个状态。 应用场景: 2、打游戏时的存档。 3、Windows 里...原创 2018-05-08 19:43:17 · 354 阅读 · 0 评论 -
【设计模式】结构型01代理模式(Proxy Pattern)
代理模式(Proxy Pattern)定义:顾名思义,增加中间层,为其他对象提供一种代理以控制对这个对象的访问。核心在于代理二字。1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。静态代理与动态代理:静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理...原创 2018-05-15 19:44:24 · 249 阅读 · 0 评论 -
【设计模式】【最后一个】结构型07适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 推荐一个很全面的博客:https://blog.csdn.net/zxt0601/article/details/52848004定义:将一个类的接口转换成客户希望的另外一个接口,核心是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。何时使用(摘抄自runnoob):1、系统需要使用现有的类,而此类的接口不...原创 2018-05-22 17:54:33 · 167 阅读 · 0 评论 -
【设计模式】结构型04桥接模式(Bridge Pattern)
学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html桥接模式(Bridge Pattern) 以下文案摘抄自以上链接:桥接(Bridge)这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互...原创 2018-05-17 18:23:28 · 160 阅读 · 0 评论 -
【设计模式】结构型03外观模式(Facade Pattern)
【设计模式】结构型02装饰模式(Decorator Pattern)意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。何时使用:1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。2、定义系统的入口。如何解决:客户端不与系统耦合,外观类与系统耦...原创 2018-05-17 16:45:37 · 134 阅读 · 0 评论 -
【设计模式】行为型05责任链模式(Chain of responsibility Pattern)
学习地址:http://www.runoob.com/design-pattern/chain-of-responsibility-pattern.htmldemo采用了DEBUG级别举例子,理解起来还是比较容易的,略做修改和总结:责任链模式(Chain of responsibility Pattern原理:责任链中所有的对象持有下一个状态对象的引用,若自己不满足条件,就交给下一个对象处理jav...原创 2018-05-04 10:51:15 · 289 阅读 · 0 评论 -
【设计模式】【一】创建型模式总结
前文提到,设计模式大致分为创建型、结构型、以及行为型三个大类。 而创建型模式、多为更合理的创建对象而设计,由于J2EE中对象的创建多为Spring管理,所以实际开发中使用的并不多。当然不包括造轮子的大牛们。 于此,简单总结了创建型模式的应用场景以及简单示例,欢迎指点:一、单例模式 简介:顾名思义,单例模式(singleton pattern)保证一...原创 2017-07-03 18:59:04 · 803 阅读 · 0 评论 -
【设计模式】行为型01策略模式(strategy patten)
学设计模式一段时间了,有些懂了,有些半知半解,通过写笔记博客的方式总结一下: 关于策略模式,我的个人理解就是将一些经常变动的算法独立抽取出来,可以是一个方法,也可以是一个策略类,这样,如果有需求变更,只需要添加新的策略类然后进行调用切换即可。 虽然个人使用时一般是抽取为方法,但是以面向对象的角度以及书上的类图来看,采用策略类比较符合面向对象的思想。当然也不必墨守成规,灵活...原创 2017-08-29 18:36:44 · 764 阅读 · 0 评论 -
【设计模式】行为型02模板方法模式(Template Method Patten)
五一长假,没有出去,不喜欢嘈杂的人群,玩了会游戏发泄了下憋在心底的戾气,手旁大马克杯里是母亲泡的绿茶。点开自己的播放列表,耳机里传来的是理查德克莱德曼的致爱丽丝。自己是个凡人,卑微渺小的活着。不说废话了,搞起: 模板方法模式是一种行为型模式,原理比较简单,就是对多态的一种应用,自己也在无意识中使用过很多次,看书时才意识到这种方式被总结为设计模式。 首先说说我自己的理解:模板方法...原创 2018-04-30 20:11:16 · 875 阅读 · 0 评论 -
【设计模式】行为型03观察者模式(Observer Pattern)
记得16年初第一次学习了23种设计模式,但是除了少数几个简单的外,其他的很多都是学了个似懂非懂,以至于有人问起甚至说不上来,现在想想,其实就是没看懂而已。例如观察者模式,其实原理很简单,但是当时并没有能静下心来细细总结,在此自我反思,也望后来者共勉。 而关于设计模式是否能够被用的到这个问题,其实当我们遇到很多业务场景的时候,也会自然而然的想到与设计模式类似的思路,所以设计模式并没...原创 2018-05-02 19:37:23 · 305 阅读 · 0 评论 -
【设计模式】行为型08状态模式(status Pattern)
状态模式(status Pattern) 定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States)。与命令模式有很多相同之处。 简单来说,状态模式就是通过对象的状态来改变其行为,博主凭借模糊的记忆,简单还原一下许久之前看过的《大话设计模式》一书中的例子(这本书中的demo特别精致,推荐一读): ...原创 2018-05-09 18:46:54 · 437 阅读 · 0 评论 -
【设计模式】行为型04迭代器模式(Iterator Pattern)
学习地址:http://www.runoob.com/design-pattern/iterator-pattern.html 迭代器模式,简单来说就是通过迭代的方式对集合进行遍历,在集合的学习中也一定会接触迭代遍历,原理是一样的。所以这里简单说一下,重在自己体会:类图: 实现:1、迭代器接口:package com.pat.iterator;/** * 定义一...转载 2018-05-03 18:32:54 · 300 阅读 · 0 评论 -
【设计模式】行为型09访问者模式(Visitor Pattern)
学习地址:https://blog.csdn.net/u012124438/article/details/70537203(参考了很多博客,只有这个讲明白了核心点)访问者模式(Visitor Pattern) 定义:将数据操作与数据结构分离的设计模式实现方式:访问者是一个接口,它拥有一个 visit 方法,这个方法对访问到的对象结构中不同类型的元素做出不同的处理。在对象结构的一次被访问过程中,...原创 2018-05-10 18:38:04 · 285 阅读 · 0 评论 -
【设计模式】结构型02装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern) 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不想增加很多子类的情况下扩展类。以下是demo:这里我省略了消费者House类,直接使用核心实现方式进行解释:1、装饰类接口与装...原创 2018-05-16 18:18:30 · 132 阅读 · 0 评论