Java外观模式 例子
时间: 2023-05-31 21:06:59 浏览: 126
外观模式的示例
外观模式是一种结构型设计模式,它提供了一种简化复杂系统的方法,通过提供一个统一的接口来隐藏底层系统的复杂性。在Java中,外观模式通常用于为客户端提供一个简单的接口,隐藏底层系统的复杂性,使客户端更容易使用系统。
以下是一个Java外观模式的例子,假设我们有一个复杂的音响系统,其中包含多个组件,如CD播放器、音箱和放大器。每个组件都有自己的接口和实现。我们可以使用外观模式来隐藏这些复杂性,提供一个简单的接口来控制整个音响系统。
首先,我们定义一个外观类,该类将封装音响系统的所有组件,并提供一个简单的接口:
```
public class SoundSystemFacade {
private CDPlayer cdPlayer;
private Speakers speakers;
private Amplifier amplifier;
public SoundSystemFacade() {
cdPlayer = new CDPlayer();
speakers = new Speakers();
amplifier = new Amplifier();
}
public void playMusic() {
cdPlayer.loadCD();
amplifier.setVolume(10);
speakers.turnOn();
}
public void stopMusic() {
amplifier.setVolume(0);
speakers.turnOff();
cdPlayer.ejectCD();
}
// other methods to control the sound system
}
```
然后,我们定义每个组件的接口和实现:
```
public class CDPlayer {
public void loadCD() {
System.out.println("Loading CD...");
}
public void ejectCD() {
System.out.println("Ejecting CD...");
}
}
public class Speakers {
public void turnOn() {
System.out.println("Turning on speakers...");
}
public void turnOff() {
System.out.println("Turning off speakers...");
}
}
public class Amplifier {
public void setVolume(int volume) {
System.out.println("Setting volume to " + volume + "...");
}
// other methods to control the amplifier
}
```
最后,我们可以使用外观类来控制整个音响系统,而不必了解每个组件的底层实现:
```
public class Client {
public static void main(String[] args) {
SoundSystemFacade soundSystem = new SoundSystemFacade();
soundSystem.playMusic();
// do something else
soundSystem.stopMusic();
}
}
```
通过使用外观模式,我们可以将复杂的音响系统封装在一个简单的接口中,使客户端更容易使用系统。客户端不必了解每个组件的底层实现,只需调用外观类提供的方法即可控制整个系统。
阅读全文