随笔分类 -  设计模式

摘要:前言:【模式总览】——————————by xingoo 模式意图 对于某个对象或者一组对象,不同的访问者,产生的结果不同,执行操作也不同。此时,就是访问者模式的典型应用了。 应用场景 1 不同的子类,依赖于不同的其他对象 2 需要对一组对象,进行许多不相关的操作,又不想在类中是现在这... 阅读全文
posted @ 2014-11-09 13:20 xingoo 阅读(8300) 评论(0) 推荐(4) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 定义一个类的框架,当它有不同的类时,再具体实现。 比如,我们设计一个跨系统的客户端软件,Windows需要一套展现类,Linux需要一套,mac还需要一套。这样,只需要抽取他们的共同操作编程一个框架类,具体使用到哪个系统时... 阅读全文
posted @ 2014-11-09 12:43 xingoo 阅读(1499) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 定义一系列的算法,把他们封装起来,使得算法独立于适用对象。 比如,一个系统有很多的排序算法,但是使用哪个排序算法是客户对象的自有。因此把每一个排序当做一个策略对象,客户调用哪个对象,就使用对应的策略方法。 应用场景 1... 阅读全文
posted @ 2014-11-09 12:17 xingoo 阅读(1634) 评论(0) 推荐(1) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 允许一个对象在内部改变它的状态,并根据不同的状态有不同的操作行为。 例如,水在固体、液体、气体是三种状态,但是展现在我们面前的确实不同的感觉。通过改变水的状态,就可以更改它的展现方式。 应用场景 1 当一个对象的行为,... 阅读全文
posted @ 2014-11-09 11:58 xingoo 阅读(1017) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 观察者模式,也叫发布/订阅模式,从名字来说就能察觉到它的过程应该是,发布——其他人接受。 这个模式定义了对象之间的一种依赖关系,当一个对象发生变化时,其他的对象收到更新,也发生变化。 模拟我们订阅邮件这个场景,不管我们的... 阅读全文
posted @ 2014-11-09 11:36 xingoo 阅读(1511) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 这个模式主要是想通过一个对象来记录对象的某种状态,这样有利于在其他需要的场合进行恢复。 该模式还有跟多可以扩展的地方,比如可以记录多个时间的状态,每个角色都有可以扩展的空间,完全看业务场景而定。 应用场景 1 保存对象... 阅读全文
posted @ 2014-11-08 12:07 xingoo 阅读(1159) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 使用一个中介的对象,封装一组对象之间的交互,这样这些对象就可以不用彼此耦合。 这个中介者常常起着中间桥梁的作用,使其他的对象可以利用中介者完成某些行为活动,因此它必须对所有的参与活动的对象了如指掌! 应用场景 1 当一... 阅读全文
posted @ 2014-11-07 22:09 xingoo 阅读(9652) 评论(5) 推荐(1) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 提供一个方法按顺序遍历一个集合内的元素,而又不需要暴露该对象的内部表示。 应用场景 1 访问一个聚合的对象,而不需要暴露对象的内部表示 2 支持对聚合对象的多种遍历 3 对遍历不同的对象,提供统一的接口。 模式结构... 阅读全文
posted @ 2014-11-06 19:29 xingoo 阅读(3397) 评论(0) 推荐(1) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 自定义某种语言后,给定一种文法标准,定义解释器,进行解析。 做过搜索的朋友们可能更了解一些,平时我们搜索所需要的词库,通常就需要用这种方式来实现。 应用场景 1 有复杂的语法分析场景 2 需要高效的解释,胜过快速的效... 阅读全文
posted @ 2014-11-05 20:15 xingoo 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 将一个请求封装成一个对象,从而对这个命令执行撤销、重做等操作。 典型的Eclipse开发中,编辑器的操作就需要用到这个模式,比如Undo、Redo等等。 另外这个模式使得一个命令的触发与接收解耦,这样我们就可以演变成把感... 阅读全文
posted @ 2014-11-04 22:10 xingoo 阅读(1830) 评论(1) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 避免请求的发送者,和接受者过度的耦合在一起。一个请求者只需要发送一个请求即可,它的请求具体由后面哪个对象进行响应,并不需要关心。而请求的接受者可以自己处理它,也可以把它像链条一样向后传。 因此,请求也就意味着有可能丢失,或... 阅读全文
posted @ 2014-11-03 21:34 xingoo 阅读(1043) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 代理模式为其他的对象增加一个代理对象,进行访问控制。从而避免直接访问一个对象,造成效率或者安全性上的降低。 应用场景 1 远程代理,为一个远程对象,创建一个本地的代理对象。每次访问,直接访问本地代理对象即可。 2 虚代... 阅读全文
posted @ 2014-11-02 11:17 xingoo 阅读(1442) 评论(2) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 享元模式,也叫【轻量级模式】或者【蝇量级模式】。主要目的就是为了减少细粒度资源的消耗。比如,一个编辑器用到大量的字母数字和符号,但是不需要每次都创建一个字母对象,只需要把它放到某个地方共享使用,单独记录每次创建的使用上下文就... 阅读全文
posted @ 2014-11-01 11:26 xingoo 阅读(1717) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 外观模式主要是为了为一组接口提供一个一致的界面。从而使得复杂的子系统与用户端分离解耦。 有点类似家庭常用的一键开关,只要按一个键,台灯卧室客厅的灯都亮了。虽然他们各有各自的开关,但是对外用一个来控制。 应用场景 1 为... 阅读全文
posted @ 2014-10-31 21:31 xingoo 阅读(1738) 评论(1) 推荐(3) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 在不改变原来类的情况下,进行扩展。 动态的给对象增加一个业务功能,就功能来说,比生成子类更方便。 应用场景 1 在不生成子类的情况下,为对象动态的添加某些操作。 2 处理一些可以撤销的职责。 3 当不能使用生成子类... 阅读全文
posted @ 2014-10-30 19:36 xingoo 阅读(1032) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 使对象组合成树形的结构。使用户对单个对象和组合对象的使用具有一致性。 应用场景 1 表示对象的 部分-整体 层次结构 2 忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象。 模式结构 【安全的组合模... 阅读全文
posted @ 2014-10-29 19:46 xingoo 阅读(942) 评论(0) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 这个模式使用的并不多,但是思想确实很普遍。就是要分离抽象部分与实现部分。 实现弱关联,即在运行时才产生依赖关系。 降低代码之间的耦合。 模式结构Abstraction 抽象部分的基类,定义抽象部分的基础内容。Refin... 阅读全文
posted @ 2014-10-28 21:50 xingoo 阅读(1314) 评论(1) 推荐(1) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 如果已经有了一种类,而需要调用的接口却并不能通过这个类实现。因此,把这个现有的类,经过适配,转换成支持接口的类。 换句话说,就是把一种现有的接口编程另一种可用的接口。 模式结构 【类的适配器】 Target 目标接口... 阅读全文
posted @ 2014-10-27 22:04 xingoo 阅读(1335) 评论(2) 推荐(0) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 保证类仅有一个实例,并且可以供应用程序全局使用。为了保证这一点,就需要这个类自己创建自己的对象,并且对外有公开的调用方法。 模式结构 Singleton 单例类,内部包含一个本身的对象。并且构造方法时私有的。 使用场景... 阅读全文
posted @ 2014-10-26 20:40 xingoo 阅读(1621) 评论(0) 推荐(1) 编辑
摘要:前言:【模式总览】——————————by xingoo 模式意图 一个对象的创建十分复杂,为了区分构建过程和使用过程,因此分开。使用一个Director类进行对象的创建,Builder规定了这个创建过程。 模式结构 Builder 抽象建造者接口,规范各个组成部分的构建。 Concr... 阅读全文
posted @ 2014-10-23 20:23 xingoo 阅读(3509) 评论(0) 推荐(0) 编辑