4. 使用外观模式实现教室设备的统一操作,包括上课和下课两个按钮,设备包括电脑、幕布、投影仪、话筒、黑板灯。
时间: 2023-06-19 16:06:11 浏览: 136
首先,我们需要定义一个接口或抽象类,用于实现教室设备的操作。我们可以定义一个名为 "ClassroomEquipment" 的抽象类,其中包含了开启和关闭设备的抽象方法。
```java
public abstract class ClassroomEquipment {
public abstract void turnOn();
public abstract void turnOff();
}
```
接下来,我们需要为每个设备实现一个具体类,并实现这些设备的开启和关闭方法。下面是电脑设备的具体实现。
```java
public class Computer extends ClassroomEquipment {
@Override
public void turnOn() {
System.out.println("电脑已开机");
}
@Override
public void turnOff() {
System.out.println("电脑已关机");
}
}
```
类似地,我们需要为幕布、投影仪、话筒和黑板灯实现具体类,并重写它们的开启和关闭方法。
现在我们需要实现外观类,该类将教室设备的操作封装起来,提供给用户一个简单的接口。下面是外观类 "ClassroomFacade" 的实现。
```java
public class ClassroomFacade {
private Computer computer;
private Screen screen;
private Projector projector;
private Microphone microphone;
private BlackboardLight blackboardLight;
public ClassroomFacade() {
computer = new Computer();
screen = new Screen();
projector = new Projector();
microphone = new Microphone();
blackboardLight = new BlackboardLight();
}
public void startClass() {
computer.turnOn();
screen.pullDown();
projector.turnOn();
microphone.turnOn();
blackboardLight.turnOn();
}
public void endClass() {
computer.turnOff();
screen.pullUp();
projector.turnOff();
microphone.turnOff();
blackboardLight.turnOff();
}
}
```
在外观类中,我们创建了一个构造函数来初始化每个设备的实例,以便在 "startClass" 和 "endClass" 方法中使用。这两个方法分别在上课和下课时开启和关闭设备。
现在我们可以在客户端使用外观类来操作教室设备。下面是一个示例:
```java
public class Client {
public static void main(String[] args) {
ClassroomFacade classroom = new ClassroomFacade();
classroom.startClass();
System.out.println("开始上课");
// 上课中...
classroom.endClass();
System.out.println("下课了");
}
}
```
输出结果:
```
电脑已开机
幕布已拉下
投影仪已开机
话筒已开启
黑板灯已开启
开始上课
电脑已关机
幕布已拉起
投影仪已关闭
话筒已关闭
黑板灯已关闭
下课了
```
使用外观模式,我们可以将多个设备的操作封装在一个简单的接口中,使客户端更方便地操作教室设备。
阅读全文