![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
JimJin
这个作者很懒,什么都没留下…
展开
-
设计模式与动态语言 之 模板方法(Template Method)
模板方法(Template Method): 属行为型模式,最常用,最简便 意图: [b]定义一个操作中的算法骨架,而将一些步骤延迟到子类中。TempeleteMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。[/b] 动机: 多种输出模板 适用: [list] [*] 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现 [*] ...原创 2009-11-01 23:21:49 · 164 阅读 · 0 评论 -
设计模式与动态语言 之 策略模式(strategy)
策略模式还有个别名叫政策模式(Policy),属对象行为型模式。 意图:[b]定义一系列算法,把它们一个个封闭起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化[/b] 动机:把算法硬编写在使用他们的类中是不合适的。 不合适的地方有: [list] [*]代码乱 [*]多余的引用 [*]修改困难 [*]不好测试 [/list] 适用性:...原创 2009-11-11 08:51:17 · 242 阅读 · 0 评论 -
设计模式与动态语言 之 状态模式(State)
状态模式的别名是状态对象(Objects for States),它属于对象行为型模式,在开发中使用频率一般。 [b]意图:允许一个对象在其内部状态改变时改变它的行为。这个对象看起来似乎修改了它的类。[/b] 动机: 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。 把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化...原创 2009-11-18 13:00:06 · 293 阅读 · 0 评论 -
设计模式与动态语言 之 Observer
观察者模式也是属于对象行为型模式,它的别名有:依赖(Dependents)、发布-订阅(Publish-Subscribe;在实际开发中,使用非常频繁。 [b]意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新[/b] 动机:将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象间的一致性。我们不希望为了维持...2009-11-26 12:57:54 · 240 阅读 · 0 评论 -
设计模式与动态语言之命令模式 Command
命令模式是对象行为型使用率比较高的设计模式,别名:Action(动作),Transaction(事务) [b]意图: 将一个请求封装为一个对象,从而使你可对不同的请求进行参数化;对请求排队或记录请求日志,以及支持可取消的操作 [/b] 这里所谓的“不同的请求”也既意味着请求可能发生的变化,是一个可能扩展的功能点。 动机: 方便扩展 结构: [img]http://...原创 2009-12-08 23:47:58 · 230 阅读 · 0 评论 -
设计模式与动态语言之命令模式 Composite
组合模式是一种对象结构型的使用率比较高的设计模式,它的别名有部分-整体模式,合成模式. [b]意图:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。[/b] 动机: [list] [*]这些类的代码必须区别对待图元对象与容器对象,而用户认为它们是一样的。对这些类的区别使用,使用程序变得复杂。 [*] ...原创 2009-12-09 12:54:17 · 192 阅读 · 0 评论 -
设计模式与动态语言 之 抽象工厂模式 abstract factroy
抽象工厂模式是一种在动态语言中不太常用的创建型设计模式,它的别名是kit 概述:在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。 [b]意图:提供一个创建一...原创 2010-01-07 12:41:41 · 172 阅读 · 0 评论 -
设计模式与动态语言之建造者模式 Builder
建造者模式是一种比较常用的简单的对象创建型设计模式。 它在软件系统中,主要用于面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。 [b] 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。[/b] 结构: [img]http:/...原创 2010-01-14 12:44:43 · 194 阅读 · 0 评论