设计模式
凹凸曼蓝博one
这个作者很懒,什么都没留下…
展开
-
行为型模式之解释器模式
文章目录解释器模式的定义解释器模式的结构解释器模式的实现解释器模式的应用场景解释器模式的优缺点在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实现,...原创 2020-04-22 15:33:53 · 221 阅读 · 0 评论 -
行为型模式之备忘录模式
文章目录备忘录模式的定义备忘录模式的结构备忘录模式的实现备忘录模式的应用场景备忘录模式的优缺点每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。其实很多应用软件都提供了这项功能,如 Word、记事本、Photoshop、Ec...原创 2020-04-21 13:50:00 · 244 阅读 · 0 评论 -
行为型模式之访问者模式
文章目录访问者模式的定义访问者模式的结构访问者模式的实现访问者模式的应用场景访问者模式的优缺点在现实生活中,有些集合对象中存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它的处理方式也不同,划价员根据处方单上面的药品名和数量进行划价,药...原创 2020-04-21 10:30:28 · 215 阅读 · 0 评论 -
行为型模式之迭代器模式
文章目录迭代器模式的定义迭代器模式的结构迭代器模式的实现迭代器模式的应用场景迭代器模式的优缺点在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方...原创 2020-04-17 11:51:32 · 195 阅读 · 0 评论 -
行为型模式之中介者模式
文章目录中介者模式的定义中介者模式的结构中介者模式的实现中介者模式的应用场景中介者模式的优缺点在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须告诉其他所有的朋友修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”...原创 2020-04-13 15:56:14 · 245 阅读 · 2 评论 -
行为型模式之观察者模式
文章目录观察者模式的定义观察者模式的结构观察者模式的实现观察者模式的应用场景观察者模式的优缺点在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象局的...原创 2020-04-12 16:03:53 · 175 阅读 · 0 评论 -
行为型模式之状态模式
文章目录状态模式的定义状态模式的结构状态模式的实现状态模式的应用场景状态模式的优缺点在软件开发过程中,应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。如人的情绪有高兴的时候和伤心的时候,不同的情绪有不同的行为,当然外界...原创 2020-04-01 19:19:44 · 199 阅读 · 0 评论 -
行为型模式之责任链模式
文章目录责任链模式的定义责任链模式的结构责任链模式的实现责任链模式的应用场景责任链模式的优缺点在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度...原创 2020-03-27 15:44:50 · 174 阅读 · 0 评论 -
行为型模式之命令模式
文章目录命令模式的定义命令模式的结构命令模式的实现命令模式的应用场景命令模式的优缺点在软件开发系统中,常常出现“方法的请求者”与“方法的实现者”之间存在紧密的耦合关系。这不利于软件功能的扩展与维护。例如,想对行为进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与方法的实现者解耦?”变得很重要,命令模式能很好地解决这个问题。在现实生活中,这样的例子也很多,例如,电视机遥控器(命...原创 2020-03-27 10:13:22 · 163 阅读 · 0 评论 -
行为型模式之策略模式
文章目录策略模式的定义策略模式的结构策略模式的实现策略模式的应用场景策略模式的优缺点在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如果使...原创 2020-03-26 14:48:03 · 213 阅读 · 0 评论 -
行为型模式之模板方法模式
文章目录模板方法模式的定义模板方法模式的结构模板方法模式的实现模板方法模式的应用场景模板方法模式的优缺点在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号...原创 2020-03-26 08:38:36 · 272 阅读 · 0 评论 -
结构型模式之组合模式
文章目录组合模式的定义组合模式的结构组合模式的实现透明式:安全式:组合模式的应用场景组合模式的优缺点我们知道古代的皇帝想要管理国家,是不可能直接管理到具体的每一个百姓的,因此设置了很多的机构,比如说三省六部,这些机构下边又会有很多的小组织,他们共同的管理这个国家。再比如现在的公司, 下面有很多的部门,每个部门下有会分组。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控...原创 2020-03-25 15:51:08 · 477 阅读 · 0 评论 -
结构型模式之享元模式
文章目录享元模式的定义与特点享元模式的结构享元模式的实现享元模式的应用场景享元模式的内部状态和外部状态面向对象技术可以很好的解决一些灵活性或可扩展性问题,但是在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降的问题,享元模式正是为解决这一类问题而诞生的。享元模式的定义与特点享元(Flyweight)模式的定义:享元模式又称轻量级模式,是对象池(类似...原创 2020-03-25 10:54:31 · 162 阅读 · 0 评论 -
结构型模式之外观(门面)模式
文章目录外观模式的定义与特点外观模式的结构外观模式的实现外观模式的应用场景在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”...原创 2020-03-24 16:17:42 · 187 阅读 · 0 评论 -
结构型模式之装饰器(包装)模式
文章目录装饰器模式的定义与特点装饰器模式的结构装饰器模式的实现装饰器模式的应用场景在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰模式来实现。装饰器模式的定义与特点装饰(Decorator)模式的定义:指在不改...原创 2020-03-24 14:49:59 · 205 阅读 · 0 评论 -
结构型模式之桥接模式
文章目录桥接模式的定义与特点桥接模式的结构桥接模式的实现桥接模式的应用场景在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率...原创 2020-03-19 15:21:55 · 212 阅读 · 0 评论 -
结构型模式之适配器模式
文章目录适配器模式的定义与特点适配器模式的结构适配器模式的实现类适配器模式对象适配器模式应用场景在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人和讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。在软件设计中也可能出现:需要开发的具有某种业务功能的组件...原创 2020-03-19 14:09:22 · 163 阅读 · 0 评论 -
结构型模式之代理模式
文章目录代理模式的定义与特点代理模式的结构代理模式的实现静态代理动态代理JDK 动态代理cglib动态代理JDK 和cglib动态代理的区别在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如买房, 你不想直接去售楼部,可以去房产中介代办;想找女朋...原创 2020-03-18 16:24:35 · 132 阅读 · 0 评论 -
创建型模式之建造者模式(Builder模式)
文章目录建造者模式的定义与特点建造者模式的结构建造者模式的实现应用场景建造者模式和工厂模式的区别建造者模式的扩展在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由 OPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去...原创 2020-03-18 09:14:25 · 285 阅读 · 0 评论 -
创建型模式之抽象工厂模式
文章目录抽象工厂模式的定义与特点抽象工厂模式的结构抽象工厂模式的实现应用场景前面介绍的工厂方法模式中考虑的是一类产品的生产,如手机厂只生产手机、电视机厂只生产电视机等。同种类称为同等级,也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如现在疫情期间,好多汽车厂、电器厂都开始生产口罩了,不但生产同等级的产品,还生产其他的产品。...原创 2020-03-16 14:17:11 · 201 阅读 · 0 评论 -
创建型模式之工厂方法模式
文章目录工厂方法模式的定义与特点工厂方法模式的结构工厂方法模式的实现应用场景在现实生活中社会分工越来越细,越来越专业化。各种产品有专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。同样,在软件开发中能否做到软件对象的生产和使用相分离呢?能否在满足“开闭原则”的前提下,客户随意增删或改变对软件相关对象的使用呢?这就是本文要讨论的问题。工厂方法模式的定义...原创 2020-03-16 10:43:28 · 204 阅读 · 0 评论 -
创建型模式之原型模式(深拷贝/浅拷贝)
文章目录原型模式的定义与特点原型模式的结构原型模式的实现浅克隆浅克隆带来的问题深克隆序列化实现深克隆json实现深克隆原型模式总结原型模式的定义与特点原型(Prototype)模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。原型模式的结构原型模...原创 2020-03-13 17:11:14 · 273 阅读 · 0 评论 -
创建型模式之单例模式(相信你看完会对单例模式有新的认识)
文章目录单例模式的定义与特点单例模式的结构单例模式的实现饿汉式懒汉式线程破坏懒汉式单例的事故现场:单例模式的定义与特点单例(Singleton)模式的定义:是指确保一个类在任何情况下都绝对只有一个实例,隐藏其所有的构造方法,并提供一个全局访问点。属于创建型模式。单例模式有 3 个特点:1.单例类只有一个实例对象;2.该单例对象必须由单例类自行创建;3.单例类对外提供一个访问该单例的全...原创 2020-03-13 11:53:12 · 721 阅读 · 0 评论 -
设计模式前篇(总览)
文章目录软件设计模式的产生背景软件设计模式的概念与意义软件设计模式的基本要素23 种设计模式的分类和功能软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pat...原创 2020-03-09 15:34:26 · 208 阅读 · 0 评论 -
软件设计七大原则,看完这一篇就够了
开闭原则(Open-Closed Principle)定义: 开闭原则是指一个软件实体如类、模块和函数应该 对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强 调的是用抽象构建框架,用实现扩展细节。优点: 可以提高软件系统的可复用性及可维护性。 开闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统, 例如:我们版本更新,我尽可能不修改源代码,但...原创 2020-03-04 11:28:49 · 1302 阅读 · 0 评论