二月十六的博客

学习、分享知识

设计模式——解释器模式

解释器模式顾名思义,就是给定句子和文法,然后进行解释的一种设计模式。是一种应用很少的模式,涉及到文法、语义等东西,没有基础很不好理解,更容易把设计的模式变得一坨一坨的,不容易维护更不容易理解。解释器模式涉及到四个角色:抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的...

2018-04-08 08:08:48

阅读数:7851

评论数:1

设计模式——中介者模式

中介者模式,对象与对象之间通讯,如果是一对一的非常简单,对象A告诉对象B做什么,B就做什么就好了,但是如果是不是一对一之间的通讯呢?中间的结构就会很多很混乱,当一个对象发生变化的时候,其他的对象可能也需要跟着一起变化,这就引出了中介者模式。用一个中介者对象封装一系列的对象交互,中介者使各对象不需要...

2018-04-08 08:08:42

阅读数:2613

评论数:0

设计模式——访问者模式

封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。我觉得用到这种模式的情况很少,这个模式也不是很容易理解。访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者...

2018-04-08 08:08:37

阅读数:2569

评论数:0

设计模式——状态模式

状态模式,当对象中的某些属性发生变化时,对象对外的行为也发生变化。在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增...

2018-04-07 11:33:00

阅读数:2594

评论数:0

设计模式——备份模式

备份设计模式,需要备份的对象自身有备份录,外部还有一个备份的管理者,当对象中有对象需要备份的时候,自己生成一个备份录并在管理者中进行管理,当对象数据需要恢复的时候,在从管理者中得到备份录,供对象进行数据恢复。备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的...

2018-04-07 11:31:55

阅读数:2494

评论数:0

设计模式——命令模式

命令模式,是对命令的封装,把客户端的请求封装成一个对象然后传入系统内部。实际上是一种对命令请求、命令、执行三者的解耦设计。因此这个模式涉及到的角色中有调用者和接收者两个角色,是想设计成低耦合的状态,提高灵活性。涉及到的角色:抽象命令类:定义命令的统一接口。具体命令类:Command接口的实现者,用...

2018-04-07 11:30:22

阅读数:2584

评论数:0

设计模式——责任链模式

责任链模式,一个对象包含一个处理方法和一个传递给别人的方法,在它需要处理一个问题的时候,如果它能处理,那它就处理,如果处理不了,那么它就传递给下一个人来进行处理,下一个人也进行同样的操作,直到处理完或者没人能处理的了。责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引...

2018-04-07 11:29:17

阅读数:2420

评论数:0

设计模式——迭代器模式

提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。C#和PHP自己已经实现了这个模式,例如C#里边的foreach方法。当我们要访问一个聚集而又不需要知道它内部结构的时候,可以考虑用迭代器模式,迭代器模式遍历是由它内部提供的方法实现的。迭代器模式有四个角色:迭代器:迭代器定...

2018-04-07 11:27:22

阅读数:2510

评论数:0

设计模式——观察者模式

观察者模式是一种一对多的设计模式,一个主题多个观察者,当主题发生某种变化时,会发通知给这些观察者,所有的观察者都可以进行各自内部的改变。有时观察者模式也被称为发布订阅模式。观察者涉及到四个角色: 抽象主题(Subject):抽象主题提供一个接口,定义增加和删除观察者对象,给观察者发送通知等方法。具...

2018-04-07 11:25:04

阅读数:2558

评论数:0

设计模式——模板模式

模板模式就是定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。但调用将以抽象类中定义的方式进行。两个角色:抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。具体类(ConcreteClass):实现抽象类中...

2018-04-07 11:23:06

阅读数:2443

评论数:0

设计模式——策略模式

策略模式是一种算法的封装,把算法本身和使用分割开来。一个抽象类,每个具体算法都是这个抽象类的具体实现,然后在context中定义一个算法类,并且赋值为传进来的算法对象,不同的算法传入不同的算法对象。各个算法之间位置相等,可以相互替换。策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封...

2018-04-07 11:21:37

阅读数:2516

评论数:0

设计模式——享元模式

享元模式主要是把常用的对象放到内存中,用的时候直接从内存中读取,而不是再次重新新建,减少内存占用量,提高效率。享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把...

2018-04-07 11:18:50

阅读数:2510

评论数:0

设计模式——组合模式

组合模式是数据结构中的树,拥有多级树形菜单的结构,有的时候一个系统可能很复杂,处理起来很麻烦,但是他们拥有类似的东西,我们可以设计成组合模式,用递归来处理复杂的问题,如同处理一个简单的功能一样。从而实现客户和复杂系统内部的解耦。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对...

2018-04-07 11:14:31

阅读数:2595

评论数:0

设计模式——桥接模式

桥接模式也是一种解耦的设计模式,是把抽象和实现进行解耦,使得二者独立。在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。主要的角色...

2018-04-06 17:37:24

阅读数:2574

评论数:0

设计模式——外观模式

外观模式,是一种把子系统和客户端做松耦合操作的一个设计模式。这样客户端调用系统,根本不需要知道系统内部是如何操作的,只需要调用外部“接待员”即可,所以即使子系统有变化时,也不需要客户端做改变,达到松耦合的效果。我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低...

2018-04-06 17:33:15

阅读数:2575

评论数:0

设计模式——代理模式

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。主要有三部分组成:抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。目标...

2018-04-06 17:31:30

阅读数:2619

评论数:0

设计模式——装饰者模式

在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。使真实的对象具有它本来不具备的功能。主要涉及到的角色:Component(被装饰对象基类)ConcreteComponent(具体被装饰对象)Decorator(装饰者基类)Con...

2018-04-06 17:27:54

阅读数:2799

评论数:0

设计模式——适配器模式

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。举个例子,欧式的插头在中国用不了,中间就需要一个转换器,让欧式插头可以在中国的插板上使用。适配器模式分为类适配器模式和对象适配器模式。类适配器模式采用继承的方式来实现,而对象适...

2018-04-06 17:23:43

阅读数:2722

评论数:0

设计模式——原型模式

Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。主要是两个类,一个抽象的原型类和一个实现...

2018-04-06 17:20:55

阅读数:2806

评论数:0

设计模式——建造者模式

建造者模式和工厂模式很类似,不过添加了一个导演的角色,导演是创建产品的,它负责利用创造者来组建产品并且返回一个产品,但是导演不和产品又具体关系。导演类总体来说是比较灵活不固定的部门,不像产品和创造者那样固定。一般建造者模式包含四个角色:Dirextor: 导演(指挥者)类,用于统一组装流程。Bui...

2018-04-06 17:17:58

阅读数:2995

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭