随笔分类 -  设计模式

1
摘要:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。 角色 抽象调停者(Mediator)角色:定义出同事对象到调停者对 阅读全文
posted @ 2016-05-06 12:24 无头咸鱼 阅读(476) 评论(0) 推荐(0)
摘要:访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 主要角色 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。 访问者:实现 阅读全文
posted @ 2016-05-04 17:44 无头咸鱼 阅读(287) 评论(0) 推荐(0)
摘要:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式类图中的基本结构: Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。 ConcreteCommand 阅读全文
posted @ 2016-05-03 15:50 无头咸鱼 阅读(287) 评论(0) 推荐(0)
摘要:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 *在一个纯的职责链模式里面,一个请求必须被某一个处理者对象所接收;在一个不纯的职责链模式里面,一个请求可以最终不被任何接收端对象所接收。 适用性 在以下条 阅读全文
posted @ 2016-04-28 02:23 无头咸鱼 阅读(350) 评论(0) 推荐(0)
摘要:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 优点 1、提供了一种替代继承的方法,而且既保持了继承的优点(代码重用)还比继承更灵活(算法独立,可以任意扩展)。 2、避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。 阅读全文
posted @ 2016-04-26 21:47 无头咸鱼 阅读(225) 评论(0) 推荐(0)
摘要:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。 模式中的角色 1、上下文环境(Context):它定义了客户程序需要的接口并维护一个具体 阅读全文
posted @ 2016-04-23 13:21 无头咸鱼 阅读(250) 评论(0) 推荐(0)
摘要:有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 模式中的角色 抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。 阅读全文
posted @ 2016-04-22 16:08 无头咸鱼 阅读(275) 评论(0) 推荐(0)
摘要:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 优点 1、封装不变部分,扩展可变部分。 2、提取公共部分代码 阅读全文
posted @ 2016-04-21 13:15 无头咸鱼 阅读(265) 评论(0) 推荐(0)
摘要:享元模式就是通过使用共享的方式,达到高效地支持大量的细粒度对象。它的目的就是节省占用的空间资源,从而实现系统性能的改善。 享元对象的所有状态分成两类: 享元对象的第一类状态称为内蕴状态(Internal State)。它不会随环境改变而改变,存储在享元对象内部,因此内蕴状态是可以共享的,对于任何一个 阅读全文
posted @ 2016-04-19 16:25 无头咸鱼 阅读(284) 评论(0) 推荐(0)
摘要:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。Composite模式使得用户对单个对象和组合对象的使用具有一致性。 效果及实现要点 1、Compo 阅读全文
posted @ 2016-04-18 17:46 无头咸鱼 阅读(309) 评论(0) 推荐(0)
摘要:在提出桥接模式的时候指出,桥接模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。 效果及实现要点: 1、Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使 阅读全文
posted @ 2016-04-18 14:35 无头咸鱼 阅读(347) 评论(0) 推荐(0)
摘要:Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 要点: 1、装饰者和被装饰对象有相同的超类型。 2、可以用一个或多个装饰 阅读全文
posted @ 2016-04-15 17:04 无头咸鱼 阅读(295) 评论(0) 推荐(0)
摘要:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 关于代理模式种类的划分,我个人认为不能分为种类的划分,他们只是在不同领域或者说方向上的应用而已: 远程(Remote)代理:为一个位于不 阅读全文
posted @ 2016-04-15 14:10 无头咸鱼 阅读(322) 评论(0) 推荐(0)
摘要:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 所涉及的角色有: 目标(Target)角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是类。 源(Adapee)角色:现在需要适配的接口。 适配器( 阅读全文
posted @ 2016-04-14 15:19 无头咸鱼 阅读(302) 评论(0) 推荐(0)
摘要:外观模式的主要思想是将复杂的细粒度的对象服务包装成简单的易使用的粗粒度的功能服务,我们大家最容易理解和知道的外观模式就是,使用的API接口的封装,我们将第三方的API接口引入到我们的项目中的时候,我们需要对这些接口进行包装,将细粒度的具体调用过程进行包装成外观类的形式,通过外观类来进行统一的调用。 阅读全文
posted @ 2016-04-14 10:37 无头咸鱼 阅读(220) 评论(0) 推荐(0)
摘要:将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。 客户端不需知道创建的具体细节,只需对指挥者下命令,这就解耦了客户端和创建者,这个指挥者感觉有点像一个工厂,但是工厂模式解 阅读全文
posted @ 2016-04-13 14:55 无头咸鱼 阅读(335) 评论(0) 推荐(0)
摘要:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中 阅读全文
posted @ 2016-04-12 11:44 无头咸鱼 阅读(227) 评论(0) 推荐(0)
摘要:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 优点: 1、可以使代码结构清晰,有效地封装变化。在编程中,产品类的实例化有时候是比较复杂和多变的,通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的 阅读全文
posted @ 2016-04-11 14:22 无头咸鱼 阅读(286) 评论(0) 推荐(0)
摘要:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。描述 优点: 1、工厂 阅读全文
posted @ 2016-04-07 17:37 无头咸鱼 阅读(536) 评论(1) 推荐(0)
摘要:姗姗来迟的学习,边学习边总结吧。设计模式的重要性就不多说了,为什么要用设计模式需要说吗?也不需要吧,有兴趣的可以看看:http://zhuanlan.zhihu.com/p/19835717 1、创建型模式 对象的创建会消耗掉系统很多资源,所以单独对对象的创建进行研究,从而能够高效的创建对象就是创建 阅读全文
posted @ 2016-04-07 17:11 无头咸鱼 阅读(221) 评论(0) 推荐(0)

1