随笔分类 - 设计模式
1
摘要:在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。 虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实
阅读全文
摘要:转发自http://c.biancheng.net/view/1397.html 在现实生活中,有些集合对象中存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划
阅读全文
摘要:在软件开发系统中,常常出现“方法的请求者”与“方法的实现者”之间存在紧密的耦合关系。这不利于软件功能的扩展与维护。例如,想对行为进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与方法的实现者解耦?”变得很重要,命令模式能很好地解决这个问题。 在现实生活中,这样的例子也很多,例如,电
阅读全文
摘要:在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了
阅读全文
摘要:在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。 既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍
阅读全文
摘要:在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣月艮与衣柜以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组合模式来
阅读全文
摘要:前言 每个人都会犯错误, 都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中, 客户同样会常常犯错误,能否提供“后悔药”给他们呢? 当然是可以的, 而且是很有必要的. 这个功能就是由 备忘录模式 来完成. 其实很多应用软件都提供了这项功能,如 Word、记事本、Ph
阅读全文
摘要:定义与特点 1.1 定义 状态模式允许一个对象在其内部状态改变的时候改变其行为.这个对象看上去就像是改变了它的类一样. 1.2 特点 状态模式优点: 封装了转换规则,并枚举可能的状态,它将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为. 多个环
阅读全文
摘要:在生活中,想用苹果充电线给安卓的手机充电时,因为两者的接口不一样,会导致充电口无法进行匹配, 这时候,就需要适配器,将安卓的充电口转化为苹果的接口,这样就可以充电啦.已有的类与新的接口不兼容问题是很普遍的, 人们在日常的生产中,为找到了一个解决方案,以上面的例子引出今天要讲的设计模式--适配器模式.
阅读全文
摘要:在现实生活中,经常存在办事较为复杂的例子, 假如办理房产或者注册一家公司, 有时要同多个部门联系, 这时候要有一个综合的部门能解决一切手续问题就好了. 软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背
阅读全文
摘要:在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提
阅读全文
摘要:今天将讲述设计模式的另一篇--建造者(构造器)模式,网上的资料也有很多,但感觉都是大而同,小而不同,希望本篇可以为大家增加点对建造者模式的认识和理解. 介绍 1.1 建造者(构建器)模式 建造者(构建器)--Builder模式, 是将一个复杂对象的构建与表示相分离,是的同样的构建过程可以有不同的创建
阅读全文
摘要:前面工厂方法模式中考虑的是一类产品的生产, 如畜牧场只管动物、电视机厂只产电视机等. 同种类称为同等级, 也就是说,工厂方法模式只会考虑生产同等级的产品,但是在现实生活中许多工厂都是综合性很强的,也会加大工厂的最大使用效率,能够生产出多等级的产品. 畜牧场可以养动物,也可以养植物等. 本篇博客将讲述
阅读全文
摘要:模式动机 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案: • 第一种设计方案是为每一种形状都提供一套各种颜色的版本。 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制
阅读全文
摘要:今天我们继续讲解一下设计模式中的另一种 装饰器模式. 一、定义及结构图 装饰器模式是指对已经存在的某些类进行装饰,来扩展一些功能,属于结构型模式.创建一个装饰类来包装原有的类以达到装饰的效果.其结构图如下所示: Component为统一的接口,也是被装饰类和装饰类的基本. ConcreteCompo
阅读全文
摘要:在现实的开发中,许多的对象都不是独立存在的,其中一个对象的行为发生改变可能导致了一个或者多个其他对象的行为也会发生改变。而这对应着设计模式中--观察者模式。 一、模式的定义与特点 定义: 指多个对象存在一对多的依赖关系,当一个对象的状态发生改变的时候,所有依赖于它的对象得到了通知并被自动更新。这种模
阅读全文
摘要:在讲述之前,我们首先看小例子: 现实生活中我们去商场上买东西的时候,卖场经常根据不同的客户来制定不同的报价策略,比如新客户不打折扣,针对老客户打9折,针对VIP打8折…… 现在我们做一个报价管理模块,简要点就是针对不同的客户,提供不同的报价。 假如是有你来做,你会怎么做?在日常的开发中,我们大部分会
阅读全文
摘要:在日常的工作生活中,有这些场景:(还有其他生活场景) 去银行办理业务一般会经过四个流程:取号、排队、办理业务以及办理完业务后对工作人员进行评分等流程,其中取号、排队和对银行工作人员进行评分的业务对每个顾客都是同样的,可以在父类中实现;但是办理的业务每个人是不同的,取款、存款或者转账等,个人的具体业务
阅读全文
摘要:上一篇我们讲述了单例模式,本篇博客将讲述工厂模式,关于工厂模式,也有很多人写过,反正都大同小异。废话少说,下面我们将直接讲述工厂模式的原理。 一、概述 1.1 定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中. 我们将被创建的对象称为“产品” , 将创建产品的对象
阅读全文
摘要:本人已迁移博客至掘进,以后会在掘进平台更新最新的文章也会有更多的干货,欢迎大家关注!!!https://juejin.im/user/588993965333309 最近大约15天左右,自己想整理设计模式方面的问题,毕竟在研发过程中,对书写代码的质量还是有很大的提高的。本篇将讲述23中设计模式中的第
阅读全文
1