![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GOF
haigenwong
这个作者很懒,什么都没留下…
展开
-
GoF著作中未提到的设计模式(1): Archetype
GoF著作中未提到的设计模式(1):Archetype 半天也没能给这个设计模式想出一个中文名称,算了,有时候还是原版的更容易理解。 简单地说,Archetype设计模式的目的是将业务处理逻辑和具体实现分离,所以至少需要两个参与者:Decorator和Delegate, 它们都实现同一个接口,Decorator负责处理业务逻辑,而Delegate负责具体的实现,在Decorato转载 2014-04-30 17:36:17 · 535 阅读 · 0 评论 -
GoF著作中未提到的设计模式(3):Null Object
Null Object模式的目的包括: 1. 当对象提供者无法提供指定类型的对象时, 返回一个什么都不做的对象, 这对调用者是透明的,并且调用者不用判断获得的对象是否为null了,当然,对象提供者必须告知调用者(通过约定等). 2. 有时候需要传递一个什么都不做的某个类型的对象给合作方. 例如某个函数需要实现特定接口的对象(通过参数传入)进行某些操作, 该函数的调用者在某些情况下希望不转载 2014-04-30 17:38:07 · 528 阅读 · 0 评论 -
GoF著作中未提到的设计模式(7):Publish-Subscribe
很多项目中都有消息分发或者事件通知机制,尤其是模块化程度高的项目。例如在办公自动化系统中,有些子系统对于新建用户这一事件很感兴趣,权限模块希望为这个新用户设置默认的权限,报表模块希望重新生成当月的报表,诸如此类的代码都写到新建用户的业务逻辑后面,会加大耦合度,可维护性降低,并且对于每个模块都是一个独立工程的情况,这种方式更是不可取。对于简单的情形,观察者模式就适用了,如果系统中有很多地方都需要收发转载 2014-04-30 17:40:21 · 362 阅读 · 0 评论 -
GoF著作中未提到的设计模式(6):Specification
在一个较为复杂的业务流程中,某些条件的满足与否决定了业务逻辑的走向,我们可以把这些条件抽离出来,使得任意个条件以某种关系进行组合,从而灵活地对业务逻辑进行定制。另外,在查询、过滤等应用场合中,我们也可以预定义多个条件,使用这些条件的组合来处理查询逻辑,而不是使用逻辑判断语句来处理,那样只会让代码变得复杂,让脑袋变大。 在Specification设计模式中,一个条件就是一个specifi转载 2014-04-30 17:42:54 · 498 阅读 · 0 评论 -
GoF著作中未提到的设计模式(5):Object Pool
Object Pool,即对象池,对象被预先创建并初始化后放入对象池中,对象提供者就能利用已有的对象来处理请求,减少对象频繁创建所占用的内存空间和初始化时间,例如数据库连接对象基本上都是创建后就被放入连接池中,后续的查询请求使用的是连接池中的对象,从而加快了查询速度。类似被放入对象池中的对象还包括Socket对象、线程对象和绘图对象(GDI对象)等。 在Object Pool设计模式中,主要转载 2014-04-30 17:51:50 · 446 阅读 · 0 评论