摘要:这几个模式比较类似, 都是用作interface, 但有所不同 Proxy, 特点是以假乱真, client在使用的时候就和在使用真正的object一样, 接口完全一致, proxy和object的交互是对client透明的 Adapter, 典型的是电源的adapter, 美标换欧标, 即解决接口不匹配, client和lib都已经写好, 但接口不匹配 Facade, 用于屏蔽子...
阅读全文
摘要:一般执行一个操作的过程, 创建对象, 并调用对象的函数, 函数执行, 返回 比如下面的类图, client直接调用Receiver.action 而命令模式, 抽象出command对象, 并在command对象封装对Receiver.action的调用 而client只负责创建command对象(invocation), 并提交给Invoker(通过setCommand), 而command...
阅读全文
摘要:http://www.ibm.com/developerworks/cn/java/j-lo-activeobject/ 之所以叫, 主动对象, 区别于被动对象, 只能被动被别人调用的对象, 而主动对象内部有线程可以自行调用自己的方法. Active Object是一种高级模式, 概念上和RPC有些类似, 但是实现和用途不一样 Active Object首先使用了Proxy模式, 这个...
阅读全文
摘要:访问者模式 访问者模式(Visitor), 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 这个模式相对比较复杂, 而又很少能被用上, 拿GOF作者的话'大多数时候你并不需要访问者模式, 但当你一旦需要它, 那就是真正的需要' 访问者模式的本质就是解数据结构和结构上的操作之间的耦合, 使操作集合可以自由的演化. 看上去很美...
阅读全文
摘要:http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf, paper Staged Event Driven Architecture (SEDA) 介绍 并发的编程模型 1. 多线程模型 最为传统的模型, 为每个request起个新的thread去执行, 以实现并发 最大的问题是, 扩展问题, request很多的时候...
阅读全文
摘要:http://www.artima.com/articles/io_design_patterns.html http://note.sdo.com/u/1434409594/n/lvRFW~kjR2N0LX0nE004_r http://www.cnblogs.com/xuxm2007/archive/2011/08/15/2139808.html, 图示 我看了些blog, 很少有...
阅读全文
摘要:单例模式 (singleton),保证一个类仅有一个实例,并提供个访问它的全局访问点。 Singleton pattern provides a mechanism to limit the number of the instances of the class to one. Thus the same object is always shared by different parts of...
阅读全文
摘要:http://www.cnblogs.com/tqsummer/archive/2011/01/24/1943314.html, Python和Decorator(装饰器)模式 http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html, Python装饰器与面向切面编程 最近在看FP相关, 看到Closure, 想起这个... pyth...
阅读全文
摘要:装饰模式 动态 地给一个对象 添加一些额外的职责 。就增加功能来说,Decorator模式相比生成子类更为灵活。 对于对象功能的扩展, 面向对象一般通过继承来解决, 但这种方式缺乏灵活性, 而且随意定义子类容易导致类层次结构过快膨胀. 场景, 当类的核心职责和主要行为没有发生变化, 仅仅需要动态对类对象添加一些装饰性的功能, 比如给人穿衣服...... 如下图所示, 只是...
阅读全文
摘要:本质上而言, 这种模式就是用类来封装和拆分条件分支(if else, switch case), 带来的问题就是其实用类封装也是很麻烦的. 其实对于更高级的语言, 如动态语言python(通过eval, 如下例), 或FP语言(通过pattern match), 这种模式根本就没有存在的价值. 工厂模式概述 工厂模式, 包括简单工厂, 工厂方法, 抽象工厂, 为什么叫工厂, 因为工...
阅读全文
摘要:很多程序员用面向对象语言写了多年的代码, 仍然不知道设计模式为何物, 这不奇怪, 设计模式并不是非有不可,可是它能让代码变的更美好。 程序员大可闷头堆代码, 复制粘贴, 然后不断的感慨代码难以维护, 难以复用, 难以扩展, 而继续不思进取。 当然也可以选折不断去追求更美好, 更合理的代码, 把自己从bug调试, 需求变动等噩梦中拯救出来, 进而真正体会到编码的乐趣。 你如果选...
阅读全文
摘要:策略模式 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 场景, 对于输入, 在不同的情况下有不同的处理逻辑, 即有不用的算法 那么c的做法, 把各个算法封装成函数,仍然用大量的if... else...来判断, 条件不同使用不同的算法函数来处理. 面向对象的做法, 上面提到了工厂模式, 建个抽象算...
阅读全文