随笔分类 -  设计模式

摘要:访问者模式:为某个对象组合添加新功能,而又不改变组合的内部结构 Visitor抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口 ConcreteVisitor具体访问者角色,实现Visitor声明的接口 Element定义一个接受访问操作(accept()),它以一个访问者(Visit 阅读全文
posted @ 2016-11-09 23:47 HectorHou 阅读(330) 评论(0) 推荐(0)
摘要:原型模式:通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的(clone) 特点: 向用户隐藏了创建新实例的复杂性 让用户可以产生未知类型的对象,即只需知道对象实现了哪些接口,而无需知道具体是哪种实现 在某些情况下,复制对象比创建对象更高效 阅读全文
posted @ 2016-11-08 23:21 HectorHou 阅读(359) 评论(0) 推荐(0)
摘要:备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。可以将该对象恢复到原先保存的状态 Java中可以使用序列化机制保存状态 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。 备忘录:负责存储发起人对象的内部状态,在需要的时 阅读全文
posted @ 2016-11-07 23:06 HectorHou 阅读(364) 评论(0) 推荐(0)
摘要:中介者模式:集中管理相关对象之间的复杂沟通和控制 >>>> 特点: 关系复杂的对象之间解耦了(对象之间必须相互认识 -> 对象只认识中介者) 中介者包含了整个系统的控制逻辑,控制逻辑集中可以简化维护 每个对象在自己状态改变时告诉中介者,每个对象对中介者发出的请求给予回应 中介者常常被用来协调GUI组 阅读全文
posted @ 2016-11-06 23:47 HectorHou 阅读(154) 评论(0) 推荐(0)
摘要:解释器模式:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子 特点: 每一种语法设置为一个类,便于实现 便于扩展语言的语法 用与处理重复发生的交叉问题或解析一种语言 缺点: 解释器模式会引起类膨胀 效率不高 解释器模式采用递归调用方法 举例: 阅读全文
posted @ 2016-11-05 23:58 HectorHou 阅读(252) 评论(0) 推荐(0)
摘要:蝇量模式:让某个类的一个实例能够用来提供多个“虚拟”实例,运用共享技术有效地支持大量细粒度的对象 特点: 减少运行时对象实例的个数 将许多“虚拟”对象的状态一同管理 运用共享技术有效地支持大量细粒度的对象 区分对象的共享变量(内部状态)和不可共享变量(外部状态,将此类变量从类从剔除,由外部传入) 用 阅读全文
posted @ 2016-11-04 23:35 HectorHou 阅读(446) 评论(0) 推荐(0)
摘要:责任链模式:使一个以上的对象都有机会能够处理某个请求 特点: 链中的每个对象包含它下一个对象的引用和对事件的处理方法。请求在这个链上传递,直到链上的某一个对象决定处理此请求 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,将请求的发送者与接收者解耦 可以动态的改变处理对象成员的顺序,可 阅读全文
posted @ 2016-11-03 23:35 HectorHou 阅读(349) 评论(0) 推荐(0)
摘要:生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 builder:为创建一个产品对象的各个部件指定抽象接口 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个产品的引用 Director:构造 阅读全文
posted @ 2016-11-02 23:50 HectorHou 阅读(201) 评论(0) 推荐(0)
摘要:桥接模式:将抽象部分与实现部分分离,使它们都可以独立的变化。 优点: 将抽象与实现解耦,可以独立拓展而不影响对方 处理多维度变化的场景,将各个维度设计成独立的继承结构。使各个维度可以独立的扩展在抽象层建立联系。 使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的 阅读全文
posted @ 2016-11-01 23:09 HectorHou 阅读(238) 评论(0) 推荐(0)
摘要:代理模式:为另一个对象提供一个替身或占位符控制这个对象的访问 特点: 让代理对象控制对象的访问,被代理对象可以是远程对象(远程代理),创建开销较大对象(虚拟代理),或需要安全控制的对象(保护代理) 为另一个对象提供代表,以便控制客户对对象的访问 代理分类: 远程代理:好比远程对象(在不同JVM虚拟机 阅读全文
posted @ 2016-10-30 21:47 HectorHou 阅读(313) 评论(0) 推荐(0)
摘要:状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 ——将状态封装成独立的类,将动作委托给当前状态对象,所以行为会随着内部状态的变化而变化 状态转换图:为每一个状态创建一个实现一组相同操作接口的对象,实体对象包含所有状态并有一个当前状态接口的引用 特点: 允许一个对象基于不用 阅读全文
posted @ 2016-10-29 23:24 HectorHou 阅读(1085) 评论(0) 推荐(0)
摘要:组合模式:允许将对象组合成树形结构来表现“整体/部分”层次结构。组合让客户用一致的方式处理个别对象和组合对象 特点: 树形结构表示对象组合 忽略对象组合和对象个体之间的差别,即相同的操作既可以作用于对象组合,也可以作用与对象个体 注意: 因为继承方法中,有些方法只有对叶子节点有意义,而有些方法只对非 阅读全文
posted @ 2016-10-28 23:32 HectorHou 阅读(662) 评论(0) 推荐(0)
摘要:迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示 特点: 将客户端与对象集合的存储方式解耦,即客户遍历对象时无需知道对象的具体存储方式 封装变化的部分,即多个不同的集合的不同遍历方式,创建迭代器封装遍历每个对象集合的过程 客户不需要知道具体对象集合是如何存储的,也无需知 阅读全文
posted @ 2016-10-27 23:24 HectorHou 阅读(419) 评论(0) 推荐(0)
摘要:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤 模板就是基类中的一个方法,包含一组步骤,任何一个步骤都可以是抽象的,可以在保证算法结构不变的情况下由子类实现具体某个步骤 模板就是基类中的一个方法,包含一组步 阅读全文
posted @ 2016-10-26 17:07 HectorHou 阅读(353) 评论(0) 推荐(0)
摘要:外观模式:提供了一个统一的接口用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用 特点: 将一个或多个类的复杂的一切隐藏在背后,只露出一个干净美好的外观 通过提供一个有着更合理接口的外观类,将复杂的子系统变得容易操作 外观只是提供了一些简化的操作,没有把子系统的高级操作隔离起来,依 阅读全文
posted @ 2016-10-25 23:37 HectorHou 阅读(255) 评论(0) 推荐(0)
摘要:适配器模式:将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不相融的类可以相互合作 设计: 实现想要转换的接口 取得要适配的对象的引用,作为局部变量 用要适配的对象的方法实现接口中的方法 客户使用适配器的过程: 通过目标接口调用适配器方法 适配器使用被适配者的接口转换成对被适配者的调用 客 阅读全文
posted @ 2016-10-25 23:15 HectorHou 阅读(246) 评论(0) 推荐(0)
摘要:命令模式:将“请求”封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。 设计原则: 把方法的调用封装起来,调用此对象不需要知道它内部具体是如何运行的,只需要知道包装成型的方法 命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开 将“动作请求者” 阅读全文
posted @ 2016-10-24 23:15 HectorHou 阅读(582) 评论(0) 推荐(0)
摘要:当使用new实例化一个类时,使用的是实现,而不是接口,代码捆绑着具体类会导致代码更脆弱缺乏弹性,使用松耦合的OO模式可以得到解脱。 工厂:封装对象的创建,处理创建对象的细节 静态工厂:利用静态方法定义一个简单的工厂。优点:不需要创建工厂类的实例化。缺点:不能通过继承改变创建方法行为。 简单工厂:简单 阅读全文
posted @ 2016-10-22 13:24 HectorHou 阅读(1010) 评论(0) 推荐(0)
摘要:单件模式:确保一个类只有一个实例,并提供一个全局访问点。 特点: 单例模式确保一个实例被创建,并且任意时刻都只有一个对象。 特征是构造函数为私有,然后声明一个私有静态成员作为类对象,对外提供一个静态类方法创建该对象 在创建对象时会先判断是否已经创建,若是则直接返回已经创建的对象,若没有则创建新对象 阅读全文
posted @ 2016-10-21 19:54 HectorHou 阅读(334) 评论(0) 推荐(0)
摘要:装饰者模式:动态的将责任附加到对象上,若要扩展功能,装饰者提供了更有弹性的替代方案。 设计原则: 类的设计应该对拓展开放,对修改关闭。允许类容易拓展,在不修改现有代码的情况下添加新的行为 特点: 装饰者和被装饰对象有相同的超类型,我们利用继承达到“类型匹配”,而不是利用继承获得“行为”。 装饰者模式 阅读全文
posted @ 2016-10-19 23:33 HectorHou 阅读(372) 评论(0) 推荐(0)