java策略模式ppt_Java设计模式第7章混合设计模式应用.ppt

* * * * * * * * * * * * * * * * * 谢 谢 Thanks for listening. 第 7 章 混合设计模式应用 - * - 本章目标 了解命令模式和责任链模式的混合使用 了解工厂方法模式和策略模式的混合使用 了解观察者模式和中介者模式的混合使用 了解规格模式 - * - 混合设计模式 混合使用多个设计模式可以扬长避短,提高项目的稳定性、扩展性、可靠性等 常用的几个混合模式: 命令链模式:命令模式+责任链模式 工厂策略模式:工厂方法模式+策略模式 观察中介者模式:观察者模式+中介者模式 规格模式:策略模式+组合模式 - * - 命令链模式 - 1 问题: 在Windows系统中模拟UNIX系统的LS命令 UNIX系统中常用ls这个命令来显示目录或文件信息,常用以下几个组合命令: ls:简单列出一个目录下的文件; ls –l:详细列表目录下的文件; ls –a:列出目录下包含的隐藏文件; ls –s:列出文件的大小。 - * - 命令链模式 - 2 CommandName抽象类:是所有命令的父类,是责任链模式的handler类,用于负责命令链表控制。 AbstractLS抽象类:是ls命令族的抽象类,用于标示并定义ls命令的独特个性,其实现类都实现ls命令,只是命令的选项不同。 Context环境类:负责建立一条命令的链表,并返回首节点供高层模块调用,属于典型的责任链模式。 - * - 命令链模式 - 3 ClassUtils:工具类,主要职责是根据接口或父类查找到所有对应的子类 CommandVO:命令的值对象,将一个命令解析为命令名、选项、操作数,例如“ls –l /usr”命令 CommandEnum:枚举类型,主要的命令配置文件 - * - 命令链模式 - 4 上例涉及到的设计模式: 责任链模式:负责对命令的参数进行解析,且所有的扩展都是增加链数量和节点,不涉及原有的代码变更。 命令模式:负责命令的分发,将适当的命令分发到指定的链上。 模板方法模式:Command类、CommandName类都采用模板方法模式。 迭代器模式:使用for循环。 命令模式作为责任链模式的排头兵,由命令模式分发具体的消息到责任链模式 - * - 工厂策略模式 - 1 问题: IC卡交易扣款模块设计 每个员工配备一张IC卡,该卡在集团内部用于门禁系统、办公系统等,除此之外还可以进行消费,如到食堂吃饭,借书、理发等 对于每个员工来说,他的IC卡上有以下两种金额: 固定金额:员工不能提现的金额,这部分金额只能用来特定消费,即员工日常必需的消费,例如吃饭、理发、洗澡等 自由金额:员工可以消费也可以提现 - * - 工厂策略模式 - 2 一张IC卡绑定两个账户: 固定账户和自由账户。 两套交易扣款策略: 固定消费场所下的消费是从IC卡中固定账户金额中扣除,当固定金额不够时,差额再从自由账户中扣除。 非固定消费场所下的消费都从IC卡中自由账户金额中扣除。 - * - 工厂策略模式 - 3 IC卡交易扣款系统使用了以下几个模式 : 策略模式:负责对扣款策略进行封装,保证两个策略可以自由切换,也便于对扣款策略进行扩展。例如,增加一个新的扣款策略,只需三步就可以完成,先定义一个实现IDeduction接口的策略类,再在策略枚举StrategyMan中增加一个枚举项,最后在封装类DeductionFacade的getDeductionType()方法中增加对扣款策略的利用。 工厂方法模式:由工厂方法模式直接产生一个具体策略对象,使其他模块无需依赖具体的策略。 门面模式:负责对复杂的扣款系统进行封装,避免高层模块深入子系统内部细节,同时提高系统的高内聚、低耦合的特性。 - * - 观察中介者模式 - 1 问题: 有一个产品具有多个触发事件,当它产生时触发一个创建事件,修改时触发修改事件,删除时触发删除事件 针对这种事件的触发以及处理,可以采用观察者模式和中介者模式的混合使用模式 - * - 观察中介者模式 - 2 - * - 观察中介者模式 - 3 上述事件框架使用了以下几个模式 : 工厂方法模式:负责生产、修改、克隆及销毁产品对象,实现了产品和工厂的耦合,避免产品随意被创建而无触发事件的情况发生。 桥梁模式:在产品和事件两个对象的关系中采用了桥梁模式,以便两者可以自由地扩展,而不破坏其封装。 观察者模式:事件分发类是观察者,用于注册事件处理者,当产生事件时通知事件处理者,并调用相应的事件处理方法。 中介者模式:使用中介者对事件和处理者之间进行耦合。 - * - 规格模式 - 1 规格模式(Specification Pattern)是策略模式和组合模式的扩展,是一种特殊应用,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值