Java设计模式大题练习7

     当同学们请假的时候,如果请假1-3天只需向辅导员递交请假条,由辅导员批准即可;当请假超过3天,不到1周的话,由辅导员将请假条呈送给二级学院主管学生工作的副书记,由副书记批准;当请假超过一周时,由副书记将请假条呈送给学校学生处处长批准。请根据题意,选择合适的设计模式进行设计 (可以先讲述设计思路,再画出设计类图(也可不画设计类图直接给出源代码)),综合评分。

正确答案:

分析可知,对于请假,不同级别的老师有不同的审批权限,学生处长的权限大于二级学院主管学生工作的副书记,副书记的权限大于辅导员。学生将请假条呈送给具有最低权限的老师,接到请假条的老师如果具有审批权限就直接审批,否则就将请假条递交给具有更高一级权限的老师处理(如果当前接到请教条的老师已经是最高一级权限的老师而且没有审批权限的话,那么就无法再递交给具有更高一级权限的老师,只能是审批不通过了),显然,辅导员,副书记,学生处长构成了一个审批链条,可以采用责任链模式(加上模板方法模式更好)来处理该问题。

可以将请假条作为一个请求类,其中包含请假天数,请假时间,请假事由,请假人等属性;抽象处理者类应该包含一个指向下一个处理者的引用,一个获取处理者最大批假天数的抽象方法和一个抽象回应请假请求的方法,还包含一个具体处理请假请求的方法,在该方法中是判断请假条中的请假天数是否小于等于处理者的最大批假天数,如果是就直接审批,如果不是的话如果该处理者还存在下一个处理者就将请求移交给下一个处理者,如果已经不存在下一个处理者的话那么就审批不能通过。辅导员、副书记和学生处长是三个不同的具体处理者类,都继承自抽象处理者类,在三个不同的处理者类分别设置不同的最大批假天数,具体实现抽象处理者类中的获取最大批假天数方法和回应请假请求的方法。在场景类中分别创建辅导员、副书记、学生处长对象,并且将辅导员对象的下一个处理者设置为副书记对象,将副书记对象的下一个处理者设置为学生处长对象。然后创建请假请求对象并交给辅导员对象的具体处理请假请求的方法就可以了。

其中,handler类是抽象处理者类,辅导员、副书记、学生处长是三个具体的处理者类,继承自handler类。handleRequest方法就是具体处理请假请求的方法,nexthandler是指向下一个处理者的引用。getHandlerMaxDay是获得处理者的最大批假天数方法,responseRequest是回应请假请求方法,这两个方法在handler类中是抽象方法,留待具体的处理者类来实现(这里如果强调handleRequest方法是模板方法,responseRequest方法和getHandlerMaxDay方法是抽象方法则结合了模板方法模式)。Request是请求类(请假条),包含请假天数requestDay,请假人name,请假原因reason,请假日期requestDate等属性,Client类是场景类,在该类的main方法中创建具体的处理者对象,设置责任链(即分别设置处理者对象的下一个处理对象),创建请求并将请求交给责任链中的第一个处理对象来处理。也可以只有一个handler类,然后将最大批假天数,职务这些作为handler类的属性,辅导员、副书记、学生处长是三个不同的handler对象。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式练习是指通过实际编码实现,学习和掌握各种设计模式的使用方法和场景。Java设计模式是一套被广泛应用于软件开发中的经典模式,它们提供了一种解决常见问题的标准化方案,并能够提高代码的可读性、可维护性和可扩展性。 在Java设计模式练习中,我们可以选择一些常用的设计模式,如单例模式、工厂模式、观察者模式等进行实践。通过实际编写代码,我们可以更好地理解各种设计模式的实现原理和使用方法。 在练习过程中,我们可以使用一些简单的场景进行模拟,例如创建一个线程池管理类来实现单例模式,或者使用工厂模式创建图形对象,然后通过观察者模式来实现图形的更新通知。 通过这些练习,我们可以学习到设计模式的思想和原则,并能够将其应用于实际开发中。这不仅可以提高我们的编码能力,还能够培养我们的设计思维和解决问题的能力。 值得一提的是,设计模式并不是一成不变的,它们可以根据实际需求进行灵活地应用和调整。因此,在练习过程中,我们也应该注重模式的灵活运用,根据具体情况选择适合的设计模式,并善于组合多种模式进行代码的优化和重构。 总之,Java设计模式练习是一种提高编码能力和设计思维的有效方式,通过实践我们能够更好地掌握各种设计模式的使用方法和场景,从而写出更加可读、可维护和可扩展的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值