设计模式
程序员潇然
微信搜索: 疯狂的字节X 免费第一时间获得更新哦
展开
-
设计模式之装饰器模式 Decorator 包装模式 wrapper 优点 缺点 使用场景 以及简化方法...
引子现实世界的装饰器模式大家应该都吃过手抓饼,本文装饰器模式以手抓饼为模型展开简介"老板,来一个手抓饼, 加个培根, 加个鸡蛋,多少钱?" 这句话会不会很耳熟,或者自己可能都说过呢?我们看看这句话到底表达了哪些含义呢?你应该可以看得到这两个基本角色1.手抓饼 ...原创 2018-09-07 10:31:00 · 743 阅读 · 0 评论 -
外观模式 门面模式 Facade 结构型 设计模式(十三)
外观模式(FACADE)又称为门面模式意图为子系统中的一组接口提供一个一致的界面Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用。意图解析随着项目的持续发展,系统基本上都是会往功能更全面的方向发展,那么也就意味着我们的系统将会变得更加复杂。系统会被划分为多个单独的子系统,每个子系统完成一部分功能,通过分工协作完成全部功能。一个子系统也...原创 2018-12-03 14:21:00 · 157 阅读 · 0 评论 -
结构型设计模式对比 设计模式(十六)
结构型设计模式结构型模式关注于整体最终的结构,通过继承和组合,构建出更加复杂的结构进而提供更加强大的逻辑功能七种结构型模式适配器模式(Adapter Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 代理模式(Proxy Pattern) 桥接模式(Bridge Pattern) 外观模式(Facade ...原创 2018-12-07 08:41:00 · 225 阅读 · 0 评论 -
责任链模式 职责链模式 Chain of Responsibility Pattern 行为型 设计模式(十七)
责任链模式(Chain of Responsibility Pattern)职责链模式意图使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系将这些对象连接成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。责任链模式中,每个对象通过持有对下家的引用而链接起来,形成一条链条,串联起来多个处理对象。在责任链模式中,请求在链上进行传递,直到链上...原创 2018-12-10 14:28:00 · 289 阅读 · 0 评论 -
备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)
备忘录模式 Memento沿着脚印,走过你来时的路,回到原点。苦海翻起爱恨在世间难逃避命运相亲竟不可接近或我应该相信是缘份一首《一生所爱》触动了多少人的心弦,一段五百年都没有结果的爱情,让多少人潸然泪下。有人说:当你真正看懂了《大话西游》,你就真的懂了爱情;那么,当你听懂了《一生所爱》,你就真的懂了什么是哀伤和无奈。《大...原创 2018-12-19 14:39:00 · 164 阅读 · 0 评论 -
代理模式 PROXY Surrogate 结构型 设计模式(十四)
代理模式 PROXY 别名Surrogate意图为其他的对象提供一种代理以控制对这个对象的访问。代理模式含义比较清晰,就是中间人,中介公司,经纪人...在计算机程序中,代理就表示一个客户端不想或者不能够直接引用一个对象而代理对象可以在客户端和目标对象之间起到中介的作用结构代理模式的根本在于隔离,如下图所示,间接访问代理对象如何能够真的代理真实对象?在Java...原创 2018-12-05 12:23:00 · 214 阅读 · 0 评论 -
享元模式 FlyWeight 结构型 设计模式(十五)
享元模式(FlyWeight)“享”取“共享”之意,“元”取“单元”之意。意图运用共享技术,有效的支持大量细粒度的对象。意图解析面向对象的程序设计中,一切皆是对象,这也就意味着系统的运行将会依赖大量的对象。试想,如果对象的数量过多,势必会增加系统负担,导致运行的代价过高。下面看两个小例子理解下1.)有一首歌曲叫做《大舌头》其中有一句歌词“说说说说 说你爱我...原创 2018-12-06 09:52:00 · 174 阅读 · 0 评论 -
解释器模式 Interpreter 行为型 设计模式(十九)
解释器模式(Interpreter)考虑上图中计算器的例子设计可以用于计算加减运算(简单起见,省略乘除),你会怎么做?你可能会定义一个工具类,工具类中有N多静态方法比如定义了两个方法用于计算a+b 和 a+b-cpublic static int add(int a,int b){return a+b;}public static int ad...原创 2018-12-12 12:46:00 · 252 阅读 · 0 评论 -
迭代器模式 Iterator 行为型 设计模式(二十)
迭代器模式(Iterator)走遍天下,世界那么大,我想去看看在计算机中,Iterator意为迭代器,迭代有重复的含义,在程序中,更有“遍历”的含义如果给定一个数组,我们可以通过for循环来遍历这个数组,这种遍历就叫做迭代对于数组这种数据结构,我们称为是可迭代的所以迭代器就是可以用来对于一个数据集合进行遍历的对象意图提供一种方法,顺序访问一个聚合...原创 2018-12-13 11:35:00 · 156 阅读 · 0 评论 -
模板方法模式 Template method 行为型 设计模式(二十六)
模板方法模式 Template method上图为网上百度的一份简历模板截图相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为你的内容。我们从小就有语文课,逢考必有作文,而学习的途径之一就是参考优秀的范文,学习了解他们的结构,风格等。以上就是现实世界中的模板,模板的概念随处可见,所有的工业制...原创 2018-12-26 12:39:00 · 127 阅读 · 0 评论 -
策略模式 Strategy 政策Policy 行为型 设计模式(二十五)
策略模式 Strategy与策略相关的常见词汇有:营销策略、折扣策略、教学策略、记忆策略、学习策略....“策略”意味着分情况讨论,而不是一概而论面对不同年龄段的人,面对不同的商品,必然将会有不同的话术;面对购物总价的范围,很可能会有不同的折扣方案;面对理解能力不同的学生,必然有不同的教学策略;而在我们程序的世界里,“策略”就是分情况讨论。也就是类似状态...原创 2018-12-25 14:28:00 · 216 阅读 · 0 评论 -
观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)
观察者模式 Observer意图定义对象一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并自动更新。别名:依赖(Dependents),发布订阅(Publish-Subscribe)源-监听(Source-Listener)《Hold On, We're Going Home》是加拿大说唱歌手德雷克与制作组合Majid Jordan合作的节...原创 2018-12-20 09:47:00 · 174 阅读 · 0 评论 -
命令模式 Command 行为型 设计模式(十八)
命令模式(Command)请分析上图中这条命令的涉及到的角色以及执行过程,一种可能的理解方式是这样子的:涉及角色为:大狗子和大狗子他妈过程为:大狗子他妈角色 调用 大狗子的“回家吃饭”方法引子package command.origin;public class BigDog {public void goHomeForDinner() {System.out.pr...原创 2018-12-11 15:03:00 · 330 阅读 · 0 评论 -
设计模式与设计原则简介(一)
什么是设计模式?我们知道对于很多数学问题,经常会有多种不同的解法而且这其中可能会有一种比较通用简便高效的方法我们在遇到类似的问题或者同一性质的问题时,也往往采用这一种通用的解法将话题转移到程序设计中来对于软件开发人员, 在软件开发过程中, 面临的一般问题的解决方案就是设计模式(准确的说是OOP中)当然,如同数学的解题思路一样,设计模式并不是公式一样的存在设计模式(...原创 2018-11-04 12:57:00 · 715 阅读 · 0 评论 -
设计模式之适配器模式 adapter 适配器模式分类概念角色详解 类适配器 对象适配器 接口适配器 双向适配器...
现实世界中的适配器模型先来看下来几个图片,截图自淘宝上图为港版的插头与港版的插座上图为插座适配器卖家的描述图上图为适配后的结果现实世界中适配器模式 角色分类这就是适配器模式在电源插座上的应用我们看下在插座适配器中的几个重要角色可以看得出来,大陆和港版插座面板,都是作为电源的角色,他们的功能是相似的或者说相近的插头要使用插座...原创 2018-09-06 08:28:00 · 792 阅读 · 0 评论 -
创建型设计模式对比总结 设计模式(八)
原文地址:创建型设计模式对比总结 设计模式(八)创建型模式是new 的一种替代方式,可以将对象的创建与具体的类型进行分离 目前已经介绍了5种创建型设计模式(如果简单工厂算一种的话,那就是6种)分别是:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式简单工厂模式静态工厂方法是一种最简单的创建的替代方法基本上不涉及复杂的处理过程,可能执行的仅仅是包装...原创 2018-11-22 12:19:00 · 160 阅读 · 0 评论 -
桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
桥接模式BridgeBridge 意为桥梁,桥接模式的作用就像桥梁一样,用于把两件事物连接起来意图将抽象部分与他的实现部分进行分离,使得他们都可以独立的发展。意图解析依赖倒置原则要求程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合抽象抽象就是将多个事物、实体中共同...原创 2020-04-18 22:07:45 · 377 阅读 · 0 评论 -
组合模式 合成模式 COMPOSITE 结构型 设计模式(十一)
组合模式(合成模式 COMPOSITE)意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。树形结构介绍为了便于理解,我们先介绍一下树形结构什么是树形结构?windows系统的文件夹树形结构,部门组织架构,行政区...都是一种树形结构对于最终的节点,称之为叶子;否则是树枝对于树形...原创 2018-11-27 11:01:00 · 136 阅读 · 0 评论 -
原型模式 prototype 创建型 设计模式(七)
原型模式 prototype意图用原型实例指定需要创建的对象的类型,然后使用复制这个原型对象的方法创建出更多同类型的对象显然,原型模式就是给出一个对象,然后克隆一个或者更多个对象小时候看过的动画片《西游记》,主题曲猴哥中有一句“拔一根毫毛 ,吹出猴万个 ”这就是原型模式孙悟空作为原型对象,“拔一根毫毛 ,吹” 这就是调用复制对象方法,“猴”万个,就是结果了,创建了“万个...原创 2018-11-20 16:26:00 · 136 阅读 · 0 评论 -
单例模式 创建型 设计模式(六)
单例模式 Singleton单例就是单一实例, only you 只有一个意图保证一个类仅有一个实例,并且提供一个访问他的全局访问点单例模式的含义简单至极,复杂的是如何能够保障你真的只是创建了一个实例怎样才能保证一个类只有一个实例,并且这个实例对象还易于被访问?可以借助于全局变量,但是类就在那里,你不能防止实例化多个对象,可能一不小心谁就创建了一个对象所...原创 2018-11-19 14:29:00 · 221 阅读 · 1 评论 -
建造者模式 生成器模式 创建型 设计模式(五)
建造者模式 Builder 也叫做生成器模式在正式开始建造者模式之前,先回顾下抽象工厂模式本人的所有系列文章都是自己学习的记录过程,均有比较严格的先后顺序,如果不清楚抽象工厂模式可以先往前翻翻从抽象工厂演化抽象工厂模式是工厂模式的进一步抽象扩展不仅仅可以创建某种等级结构的产品,可以创建一整个产品族的产品如下图所示比如ConcreteCreator1可以创建Concret...原创 2018-11-14 16:51:00 · 401 阅读 · 0 评论 -
抽象工厂模式 创建型 设计模式(四)
抽象工厂模式是工厂方法模式的进一步抽象在工厂模式中,客户端程序依赖(消费)一种抽象产品角色Product所有的ConcreteCreator的返回类型都是Product,因为抽象工厂角色Creator就是返回Product但是,如果一个系统需要依赖多个不同的抽象产品角色怎么办?也就是需要Product1 Product2 ... 他们是不同的抽象角色,工厂模式就歇菜了...原创 2018-11-13 15:47:00 · 124 阅读 · 0 评论 -
工厂方法模式 创建型 设计模式(三)
工厂方法模式是简单工厂模式的进一步抽象工厂方法模式既保持了简单工厂模式的优点,又克服了他的缺点如不清楚简单工厂模式,可以查看前一篇他是怎么做到的呢?那就是:核心的工厂角色,不再是具体的工厂,也就是不再负责所有具体产品的创建,进一步转变为抽象角色。他仅仅提供具体工厂子类必须实现的接口 ,不再关心应该实例化哪个具体的产品类具体创建的工作的细节全部交给子类工厂去做简言...原创 2018-11-12 13:59:00 · 125 阅读 · 0 评论 -
为什么需要创建型模式以及简单工厂模式(三)
创建型模式创建型模式不同于其他模式,因为程序语言本身是支持创建对象实例的比如使用new关键字,比如通过反射创建,通过clone()方法创建对象也可以在构造方法中对创建逻辑进行干预那么,为什么还需要创建型模式?创建型概念特点先看下前文说过的创建型模式概念 创建型模式是用来创建对象的模式,抽象了实例化的过程,封装了创建逻辑 1. 将系统所使用的...原创 2018-11-06 15:03:00 · 151 阅读 · 0 评论 -
UML简单介绍-如何看懂UML(二)
在计算复杂的数学题时,我们必然会打草稿计算在绘画课中,我们可以素描出来看到的事物那么在程序设计中呢?如何描绘传达你脑海中的关于这个程序 ,设计的蓝图草稿?OOP的程序设计中,最多的自然是类、接口层次接口的设计简单的设计,可能在脑海中想象下就过了,比如A继承B但是复杂的呢?对于OOP程序设计中,类的层次、关系设计如何描绘? 用文字么? A继承B A实现C,...原创 2018-11-05 10:28:00 · 258 阅读 · 3 评论 -
中介者模式 调停者 Mediator 行为型 设计模式(二十一)
中介者模式(Mediator)调度、调停意图用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。面向对象的程序设计中,我们通常将功能进行分解,按照职责以类为维度进行划分,也就是使用时功能最终将分布在多个对象中并且我们会尽可能的保持对象...原创 2018-12-17 12:38:00 · 175 阅读 · 0 评论