scala实现设计模式之职责链模式
来源:互联网 发布:java gzip 压缩 乱码 编辑:程序博客网 时间:2024/06/18 13:42
package com.linewell.modeldesgin.responsechain/** * 职责链模式,自我感觉和akka的管理机制很像 * Created by ctao on 2015/8/30. *//** * 审批对象 * @param amount 金额 * @param number 编号 * @param purpose 采购目的 */case class PurchaseRequest(amount: Double, number: Int, purpose: String)/** * 抽象处理者,审批者类 * @param name 审批人姓名 */abstract class Approve(name: String) { /** * 定义后继对象 */ protected var successor: Approve = _ /** * 设置后继对象 * @param approve 审批者类 */ def setSuccessor(approve: Approve) = successor = approve /** * 抽象处理审批请求方法 * @param request 审批对象 */ def processRequest(request: PurchaseRequest): Unit}/** * 主任类 * @param name 审批人姓名 */class Director(name: String) extends Approve(name) { override def processRequest(request: PurchaseRequest) = request.amount match { case x: Double if x < 50000 => println(s"主任$name 审批采购单:" + request.number + ",金额:" + request.amount + "元,采购目的:" + request.purpose) case _ => this.successor.processRequest(request) }}/** * 副董事长类 * @param name 审批人姓名 */class VicePresident(name: String) extends Approve(name) { override def processRequest(request: PurchaseRequest) = request.amount match { case x: Double if x < 100000 => println(s"副董事长$name 审批采购单:" + request.number + ",金额:" + request.amount + "元,采购目的:" + request.purpose) case _ => this.successor.processRequest(request) }}/** * 董事长类 * @param name 审批人姓名 */class President(name: String) extends Approve(name) { override def processRequest(request: PurchaseRequest) = request.amount match { case x: Double if x < 500000 => println(s"董事长$name 审批采购单:" + request.number + ",金额:" + request.amount + "元,采购目的:" + request.purpose) case _ => this.successor.processRequest(request) }}/** * 董事会类 * @param name 审批人姓名 */class Congress(name: String) extends Approve(name) { override def processRequest(request: PurchaseRequest) = println("召开董事会审批采购单:" + request.number + ",金额:" + request.amount + "元,采购目的:" + request.purpose)}package com.linewell.modeldesgin.responsechain/** * 测试客户端 * Created by ctao on 2015/8/30. */object Client extends App { val ZH: Approve = new Director("周华") val YJY: Approve = new VicePresident("游建友") val WZX: Approve = new President("吴志雄") val meeting: Approve = new Congress("董事会") ZH.setSuccessor(YJY) YJY.setSuccessor(WZX) WZX.setSuccessor(meeting) ZH.processRequest(PurchaseRequest(45000, 1001, "大数据卡口项目")) ZH.processRequest(PurchaseRequest(60000, 1002, "服务器购置")) ZH.processRequest(PurchaseRequest(145000, 1003, "星环开科技专利购买")) ZH.processRequest(PurchaseRequest(1145000, 1004, "公司并购"))}
0 0
- scala实现设计模式之职责链模式
- 23种设计模式之python实现--职责链模式
- 设计模式 之 职责链
- 设计模式之职责链
- 设计模式之职责链
- 设计模式C++实现--职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- C# 设计模式之 职责链模式
- 设计模式之职责链模式
- 大话设计模式之职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- 大话设计模式之职责链模式
- 设计模式之职责链模式
- 设计模式之-----职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- 红米手机1内部存储空间不足怎么办?
- Redis数据备份持久化
- SBN使用教程总结
- Android M 新的运行时权限开发者需要知道的一切
- JavaScript内核笔记07-面向对象
- scala实现设计模式之职责链模式
- Elasticsearch权威指南(中文版)
- [leetcode] 12.Integer to Roman
- 微信开发学习路线
- Eclipse注释模板
- old-boy_LINUX
- Trie树统计词频和指定前缀的单词个数
- cocos2dx-ui的渲染机制
- 决胜C++面试:堆、栈面面观