设计模式
Missy Peng
小猫在午睡,地球在转圈。
展开
-
设计模式之解释器模式详解(Interpreter Pattern)
在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实现,其效果是非常好的,本文将介绍其工作原理与使用方法。认识解释器模式解释器(Interpret...原创 2020-04-11 11:40:54 · 303 阅读 · 0 评论 -
设计模式之职责链(责任链)模式(ResponsibilityChain Pattern)
在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。这样的例子还有很多,如找领导出差报销、生活中的“击鼓传花”游戏等。在计算机软硬件中也有相关例...原创 2020-04-10 11:54:52 · 229 阅读 · 0 评论 -
设计模式之策略者模式详解(Strategy Pattern)
在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法,卖场往往根据不同的客户制定不同的报价策略,比如针对新客户不打折扣,针对老客户打9折,针对VIP客户打8折…在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略...原创 2020-04-09 11:29:32 · 1248 阅读 · 0 评论 -
设计模式之状态模式详解(State Pattern)
在软件开发过程中,应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。如人的情绪有高兴的时候和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。对这种有状态的对象编程,传统的解决方案是:将这些所有可能发生的情...原创 2020-04-08 12:40:44 · 407 阅读 · 0 评论 -
设计模式之备忘录模式详解(Memento Pattern)
每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。其实很多应用软件都提供了这项功能,如 Word、记事本、Photoshop、Eclipse 等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;还有...原创 2020-04-06 16:21:28 · 232 阅读 · 0 评论 -
设计模式之中介者模式详解(Mediator Pattern)
在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须告诉其他所有的朋友修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。如前面所...原创 2020-04-04 11:46:17 · 364 阅读 · 0 评论 -
设计模式之迭代器模式详解(Iterator Pattern)
认识迭代器模式在系统开发中,集合对象内部表示各不相同。底层构造也尽不相同。对于这些对象,我们希望在不暴露其底层和内部表示的同时,可以使外部客户访问其中元素。迭代器模式就为这一需求提供了极其优雅的实现,接下来就让我们来认识认识迭代器模式:迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。迭代器模式(Iterato...原创 2020-04-03 15:19:49 · 408 阅读 · 0 评论 -
设计模式之观察者模式详解(Observer Pattern)
模式的定义与特点定义观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。概念很清晰,我们举个例子来理解一下观察者模式的含义,我们都在新浪微博中关注过某一位明星(假设,当然很多人已经不玩微博了),每当这位...原创 2020-04-03 12:47:07 · 466 阅读 · 0 评论 -
设计模式之访问者模式详解(Visitor Pattern)
最复杂的设计模式,并且使用频率不高,《设计模式》的作者评价为:大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了。访问者模式是一种将数据操作和数据结构分离的设计模式。(觉得太抽象,可以看下面的例子)。模式的定义与特点访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的...原创 2020-03-31 17:16:23 · 534 阅读 · 0 评论 -
设计模式之命令模式详解(Command Pattern)
在软件开发系统中,常常出现“方法的请求者”与“方法的实现者”之间存在紧密的耦合关系。这不利于软件功能的扩展与维护。例如,想对行为进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与方法的实现者解耦?”变得很重要,命令模式能很好地解决这个问题。在现实生活中,这样的例子也很多,例如,电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者),还有计算机键盘上的“功能键”...原创 2020-03-31 12:48:42 · 286 阅读 · 0 评论 -
设计模式之模板方法模式详解(Template Method Pattern)
在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可...原创 2020-03-27 12:00:19 · 200 阅读 · 0 评论 -
设计模式之代理模式详解(Proxy Pattern)
基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK 代理、接口代理)和 Cglib 代理 (可以在内存动态的创建对象,而不需...原创 2020-03-26 15:59:23 · 203 阅读 · 0 评论 -
设计模式之享元模式详解(FlyWeight Pattern)
基本介绍享元模式(Flyweight Pattern) 也叫 蝇量模式: 运用共享技术有效地支持大量细粒度的对象常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓冲池...原创 2020-03-26 10:34:58 · 494 阅读 · 0 评论 -
设计模式之外观模式详解(Facade Pattern)
基本介绍外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节原理类图类图说明外观类(Facade): 为调用端提供统一的调用接口, 外观类知道哪些子系统负责处理请...原创 2020-03-22 11:56:27 · 260 阅读 · 0 评论 -
设计模式之组合模式
基本介绍组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象原理类图角色说明Compon...原创 2020-03-21 21:02:10 · 225 阅读 · 0 评论 -
设计模式之装饰者模式
基本介绍装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)模式原理装饰者模式就像打包一个快递主体:比如:陶瓷、衣服 (Component) // 被装饰者包装:比如:报纸填充、塑料泡沫、纸板、木板(Decorator)Component 抽象主体,被装饰者,ConcreteComponent 具体的被装饰主体D...原创 2020-03-20 12:46:44 · 192 阅读 · 0 评论 -
设计模式之适配器模式理解
基本介绍配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容从用户的角度看不到被...原创 2020-03-19 12:47:03 · 233 阅读 · 0 评论 -
设计模式之桥接模式理解
1、基本介绍桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层 次可以独立改变。是一种结构型设计模式Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同 的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现 (Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能 扩展2、原理类图...原创 2020-03-19 12:34:55 · 395 阅读 · 0 评论 -
设计模式之建造者模式理解
基本介绍1.1 什么是建造者模式?将复杂对象的构建和它的表示分离,使同样的构建过程产生不同的表示建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。可以将复杂对象的构建和它的表示分离,使同样的构建过程产生不同的表示建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。1.2 主要...原创 2020-03-17 14:08:11 · 425 阅读 · 0 评论