使用责任链、命令模式

实验目的与任务

目的:熟悉UML的使用,熟悉责任链、命令模式。

任务:按照实验内容要求,完成使用责任链、命令模式实现实验内容

预习内容

复习课程的内容,熟悉责任链、命令模式的使用。

实验内容及要求

  • 责任链模式:

1、学生请假一般为班主任1天,系主任3天,院长7天,请结合责任链模式给出类图并实现。

  • 命令模式:
    1. 磁带式录音机有播音、倒带、停止功能,请结合命令模式模拟该系统,给出类图和实现代码。

 

实验结果(可续页)

  • 责任链模式:

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(具体处理者):

 

测试类:

结果:

类图:

二,命令模式:

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(接收者):

结果如下:

 

 

思考题:

  1. 在jsp中由过滤器,请问过滤器实现是否使用了哪种设计模式?

责任链模式

 

2、电视机有三个操作:开机、关机、换台,可以通过遥控器操作,请设计类图,模拟该系统。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/yszbrzdd/article/details/93376382