职责链模式
来源:互联网 发布:淘宝贷款逾期無法再借 编辑:程序博客网 时间:2024/06/10 21:26
很简单,类图如图所示,管理者抽象类有很多子类,是具体的管理者类,这些管理者类有级别的高低关系。管理者是用来处理申请的,有一个申请类,因为申请对象作为管理者类工作函数的形参,所以具体管理者类和申请类属于依赖关系,具体管理者类依赖于申请类。每一个管理者如果不能处理当前申请,则交由上级管理者处理,故每一个管理者类都需要定义一个上级管理者对象,所以应该在抽象管理者类上画上自关联(图中画的是聚合关系,差不多啦,聚合关系是更强的关联关系)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 职责链模式{ class Request { private int time; public int Time { get { return time; } set { time = value; } } } abstract class Manager { protected Manager superior; public void setSuperior(Manager x ) { this.superior = x; } abstract public void cope(Request rqt); protected string name; public string Name { get { return name; } set { name = value; } } } class ManagerA:Manager { override public void cope(Request rqt) { if(rqt.Time<5) { Console.WriteLine("时间{0},批准by {1}",rqt.Time,name); } else { superior.cope(rqt); } } } class ManagerB : Manager { override public void cope(Request rqt) { if (rqt.Time < 10) { Console.WriteLine("时间{0},批准by {1}", rqt.Time, name); } else { Console.WriteLine("时间{0},不批准by {1}", rqt.Time, name); } } } class Program { static void Main(string[] args) { ManagerA a = new ManagerA(); a.Name = "a"; ManagerB b = new ManagerB(); b.Name = "b"; a.setSuperior(b); Request rqt = new Request(); rqt.Time = 4; a.cope(rqt); rqt.Time = 7;a.cope(rqt); rqt.Time = 11; a.cope(rqt); } }}
时间4,批准by a时间7,批准by b时间11,不批准by b请按任意键继续. . .
阅读全文
0 0
- 职责链设计模式
- 职责链模式
- 职责链模式
- 职责链模式
- ChainOfResponsibility(职责链)模式
- 职责链模式ChainOfResponsibility
- 职责链模式
- 职责链模式 ResponsibilityChainPattern
- 【设计模式】职责链
- 职责链模式
- java职责链模式
- 职责链模式
- 职责链模式
- 职责链模式(python)
- 职责链模式
- 职责链模式
- 职责链模式
- 职责链模式
- OpenMP Atomic
- 数组中找重复的数字
- 强化学习笔记04——动态规划
- USACO之Section1.2.2 Transformations[模拟]
- 算法导论——栈与队列
- 职责链模式
- bzoj 1043 [HAOI2008]下落的圆盘
- 计算机组成原理——系统总线
- YUV数据格式
- JAVA中的集合类接口——Collection
- OpenMP threadprivate
- JNI字段描述符“([Ljava/lang/String;)V”
- review项目实体类经验干货分享(精华)
- 排名