实验目的与任务
目的:熟悉UML的使用,熟悉责任链、命令模式。
任务:按照实验内容要求,完成使用责任链、命令模式实现实验内容
预习内容 复习课程的内容,熟悉责任链、命令模式的使用。 |
实验内容及要求
1、学生请假一般为班主任1天,系主任3天,院长7天,请结合责任链模式给出类图并实现。
- 命令模式:
- 磁带式录音机有播音、倒带、停止功能,请结合命令模式模拟该系统,给出类图和实现代码。
|
实验结果(可续页)
Handler(抽象处理者):
package ChainResponsibility; public abstract class Handle { private Handle next; public Handle getNext(){ return next; } public void setNext(Handle next){ this.next=next; } public abstract void HandleRequest(int request); } |
ConcreteHandler(具体处理者):
测试类:
结果: ![](https://img-blog.csdnimg.cn/20190622230710148.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lzemJyemRk,size_16,color_FFFFFF,t_70) 类图: ![](https://img-blog.csdnimg.cn/20190622230709744.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lzemJyemRk,size_16,color_FFFFFF,t_70) 二,命令模式: Command(抽象命令类):
ConcreteCommand(具体命令类):
Invoker(调用者):
package CommandPattern; import java.util.ArrayList; public class Client { ArrayList commands; public Client() { super(); commands = new ArrayList(); } public void setCommand(Command command) { commands.add(command); } public void onButtonWasPushed(int slot) { ((Command)commands.get(slot-1)).execute(); } public static void main(String[] args) { Client client = new Client(); Radio radio = new Radio(); Command broadcastCommand = new BroadCastCommand(radio); Command rewindCommand = new RewindCommand(radio); Command stopCommand = new StopCommand(radio); client.setCommand(broadcastCommand); client.setCommand(rewindCommand); client.setCommand(stopCommand); //播音 client.onButtonWasPushed(1); //倒带 client.onButtonWasPushed(2); //停止 client.onButtonWasPushed(3); } } |
Receiver(接收者):
![](https://img-blog.csdnimg.cn/20190622230711260.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lzemJyemRk,size_16,color_FFFFFF,t_70) 结果如下: ![](https://img-blog.csdnimg.cn/20190622230709961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lzemJyemRk,size_16,color_FFFFFF,t_70) |
![](https://img-blog.csdnimg.cn/20190622230709983.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lzemJyemRk,size_16,color_FFFFFF,t_70) 思考题:
- 在jsp中由过滤器,请问过滤器实现是否使用了哪种设计模式?
责任链模式 2、电视机有三个操作:开机、关机、换台,可以通过遥控器操作,请设计类图,模拟该系统。 ![](https://img-blog.csdnimg.cn/20190622230709895.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lzemJyemRk,size_16,color_FFFFFF,t_70) |