电梯的调度通过抽象工厂和单例模式实现类图
时间: 2023-12-18 15:18:03 浏览: 30
抽象工厂模式和单例模式的类图如下:
![class diagram](https://img-blog.csdn.net/20180723150136383?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpdGVzYmFua2Vy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
其中,ElevatorFactory是抽象工厂类,定义了创建Elevator、FloorButton和ElevatorButton的方法。具体工厂类ElevatorFactoryImpl实现了这些方法,用于创建具体的电梯、楼层按钮和电梯按钮。
Elevator是电梯类,包含了电梯的状态、当前楼层、目标楼层等属性和方法。
FloorButton是楼层按钮类,包含了楼层编号和是否被按下的状态。当有人按下按钮时,楼层按钮会通知电梯调度器。
ElevatorButton是电梯按钮类,包含了目标楼层和是否被按下的状态。当电梯到达目标楼层时,电梯按钮会通知电梯调度器。
ElevatorScheduler是电梯调度器类,用于控制电梯的运行和状态。它包含了一个Elevator对象和多个FloorButton对象,用于接收楼层按钮的信号并向电梯发送指令。ElevatorScheduler采用单例模式实现,确保整个系统只有一个调度器。
在电梯调度的过程中,用户按下楼层按钮,FloorButton对象会通知ElevatorScheduler,ElevatorScheduler会选择最近的可用电梯,向其发送指令,电梯会按照指令移动到相应的楼层,等待乘客上下电梯。当电梯到达目标楼层,乘客按下电梯按钮,ElevatorButton对象会通知ElevatorScheduler,ElevatorScheduler会向电梯发送指令,电梯会按照指令移动到下一个目标楼层。如此往复,直到所有乘客都下了电梯。