`

命令模式,职责链模式,享元模式,解释器模式总结

阅读更多

命令模式,职责链模式,享元模式,解释器模式总结

 

 

行为请求者与行为实现者的紧耦合问题。
对请求排队或记录请求日志,以及支持可撤销的
操作等行为时,
让编程融入生活。
---------------------------------------------------
命令模式(Command):将一个请求封装为一个对象,从而
使你可用不同的请求对客户进行参数化;对请求排队或记录
请求日志,以及支持可撤销的操作。
命令模式的优点:
第一,它能较容易地设计一个命令队列;第二,在需要的情况下,
可以较容易地将命令记入日志,第三,允许接收请求的一方决定
是否要否决请求。

第四,可以容易地实现对请求的撤销和重做;第五,由于加进新的
具体命令类不影响其他的类,因此增加新的具体命令类很容易。
命令模式把请求一个操作的对象与知道怎么执行一个操作的对象
分割开。
敏捷开发原则告诉我们,不要为代码添加基于猜测的,实际不需要
的功能。如果一个清楚一个系统是否需要命令模式,一般就不要着急
去实现它,事实上,在需要的时候通过重构实现这个模式并不困难,
只有在真正需要如撤销/恢复操作等功能时,把原来的代码重构为
命令模式才有意义。
-----------------------------------------------
职责链模式
(Chain of Responsibility)
使多个对象都有机会处理请求,从而避免请求的发送者
和接收者之间的耦合关系。将这个对象连成一条链,并沿
着这条链传递该请求,直到有一个对象处理它为止。
当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHandler
对象负责处理它。
接收者和发送者都没有对方的明确信息,且链中的对象自己也并不知道
链的结构。
结果是职责链可简化对象的相互连接,它们仅需保持一个指向其后继者
的引用,而不需保持它所有的候选接受者的引用。
随时地增加或修改处理一个请求的结构。增强了给对象指派职责的灵活性。
一个请求极有可能到了链的末端都得不到处理,或者因为没有正确配置而
得不到处理。
-----------------------------------------------
尽管一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互
连接的激增又会降低其可复用性了。
大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现
为一个不可分割的整体,所以,对系统的行为进行任何较大的改动就十分
困难了。
中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介
者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地
改变它们之间的交互。
中介者模式优缺点:
中介者模式很容易在系统中应用,也很容易在系统中误用,当系统出现了
‘多对多’交互复杂的对象群时,不要急于使用中介者模式,而先反思你
的系统在设计上是不是合理。
中介者的出现减少了各个Colleague的耦合,使得可以独立地改变和复用
各个Colleage类和Mediator,由于把对象如何协作进行了抽象,将中介作为
一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各自
本身的行为转移到它们之间的交互上来,也就是站在一个更宏观的角度去看待
系统。
由于具体中介者控制了集中化,于是就把交互复杂性变为了中介者的复杂性,
这就使得中介者会变得比任何一个具体对象都复杂。
中介者模式一般应用于一组对象以定义良好量是复杂的方式进行通信的场合。
以及定制一个分布在多个类中的行为,而又不想生成太多的子类的场合。
----------------------------------------------------------------------
享元模式
Flyweight,运用共享技术有效地支持大量细粒度的对象。
在享元对象内部并且不会随环境改变而改变的共享部分,可以称为是享元对象的
内部状态,而随环境改变而改变的,不可以共享的状态就是外部状态了。事实上
,享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量
细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同
的,有时就能够受大幅度地减少需要实例化的类的数量。如果能把那些参数移到
类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单
个实例的数目。如果一个应用程序使用了大量的对象,而大量的这些对象造成了
很大的存储开销时就应该考虑使用;还有就是对象的大多数状态可以外部状态,
如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时
可以考虑使用享元模式。
--------------------------------------------------------------------------
解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,
并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
通常当有一个语言需要解释执行,并且可将该语言中的句子表示为一个抽象
语法树时,可使用解释器模式。  
它可以很容易地改变和扩展文法,因为该模式使用类来表示文法规则,
你可使用继承来改变或扩展该文法,也比较容易实现文法,因为定义抽象语法树中
各个节点的类的实现大体类似,这些类都易于直接编写。
不足:解释器模式为文法中的每一条规则至少定义了一个类,因此包含许多规则
的文法可能难以管理和维护。建议当文法非常复杂时,使用其他的技术如语法
分析程序或编译器生成器来处理。

分享到:
评论

相关推荐

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 访问者模式 数据结构 Stack - 使用泛型实现Stack 生成斐波那契数列 使用容器...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

    《Java设计模式》电子课件01至21章(程细柱PDF)

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

    lua设计模式总结

    创建型模式 1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 ...8、职责链模式lua实现 9、解释器模式lua实现 10、中介者模式lua实现 11、访问者模式lua实现

    java设计模式

    27.3.3 解释器模式使用的场景 27.3.4 解释器模式的注意事项 27.4 最佳实践 第28章 享元模式 28.1 内存溢出,司空见惯 28.2 享元模式的定义 28.3 享元模式的应用 28.3.1 享元模式优点和缺点 28.3.2 享元模式的应用 ...

    享元、解释器、职责链、装饰模式

    //简单演示一下,假定大家的累计业务额都是1000000元 double prize = 1000000 * 0.001; System.out.println(user+"累计奖金"+prize); return prize; } /** * 判断人员是普通人员还是业务经理 * @...

    C#23种设计模式样例代码和UML图

    行为型模式(策略模式、 迭代器模式、原型模式、职责链模式、 模板方法、 命令模式、 解释器模式、 中介者模式、 访问者模式、 状态模式、 备忘录模式); 结构型模式(代理模式、桥接模式、适配器模式、外观模式、...

    《Java设计模式》详解

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

    设计模式_源代码大全.zip

    职责链模式 21.中介者模式 22.享元模式 23.解释器模式 24.访问者模式 ... 相关资料:https://download.csdn.net/download/djk8888/11189309 和 https://download.csdn.net/download/djk8888/11189072

    24种设计模式以及混合设计模式

    如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...

    C#设计模式_设计模式_C#_

    创建型: 1. 单件模式(Singleton ... 职责链模式(Chain of Responsibility Pattern) 20. 备忘录模式(Memento Pattern) 21. 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    这类模式关注对象间的交互和职责分配,包括策略(Strategy)、模板方法(Template Method)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...

    android常用设计模式

    Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...

    《设计模式实训教程》【PPT+类图与代码+样章】

    5.2.1职责链模式实例之在线文档帮助系统 5.2.2命令模式实例之公告板系统 5.2.3解释器模式实例之机器人控制程序 5.2.4迭代器模式实例之商品名称遍历 5.2.5中介者模式实例之温度转换器 5.2.6备忘录模式实例之游戏...

    23种设计模式总结及案例.pdf

    包括命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、...

    设计模式所有实验及实验报告及代码.zip

    软件设计模式概述 2GoF 的 23 种设计模式 3UML中的类图及类图之间的关系 ...36解释器模式 37UMLet的使用与类图的设计 38创建型模式应用实验 39结构型模式应用实验 40行为型模式应用实验 所有实验及实验报告及代码

    Java设计模式每章源代码.zip

    “行为型模式”中的职责链模式的定义、结构与使用。 “行为型模式”中的命令模式的定义、结构与使用。 “行为型模式”中的解释器模式的定义、结构与使用。 “行为型模式”中的迭代器模式的定义、结构与使用。 ...

    设计模式精心总结

    11. 解释器模式(Interpreter):解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 在并发型模式和线程池模式中,它们关注于线程的使用和管理,目的...

    易学设计模式

    3. **行为型模式**:这类模式主要关注对象之间的责任分配,包括策略模式、模板方法模式、观察者模式、迭代器模式、命令模式、备忘录模式、状态模式、访问者模式、解释器模式和职责链模式。策略模式定义了算法族,使...

    23种面向对象设计模式

    包括策略模式(Strategy)、模板方法模式(Template Method)、迭代器模式(Iterator)、观察者模式(Observer)、访问者模式(Visitor)、命令模式(Command)、备忘录模式(Memento)、状态模式(State)、解释器...

Global site tag (gtag.js) - Google Analytics