门户网站建设步骤,cms 学校网站,计生网站生育文明建设,为什么网页制作图片显示不出来外观模式 文章目录 外观模式什么是外观模式示例 什么是外观模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面#xff0c;此模式定义了一个高层接口#xff0c;这个接口使得这一子系统更加容易使用 Facade 外观类 知道哪些子系统类负责处理请求#xff0c;将客…外观模式 文章目录 外观模式什么是外观模式示例 什么是外观模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面此模式定义了一个高层接口这个接口使得这一子系统更加容易使用 Facade 外观类 知道哪些子系统类负责处理请求将客户的请求代理给适当的子系统对象 SubSystem Classes 子系统类集合 实现子系统的功能处理Facade对象指派的任务。注意子类中没有Facade的任何信息即没有对Facade对象的引用 示例
外观模式Facade Pattern是一种结构设计模式它为子系统中的一组接口提供了一个统一的高层接口简化了外部对子系统的访问。以下是一个使用 Java 实现外观模式的示例以简化对音乐播放系统的操作为例
1.定义音乐播放系统中的各个子系统组件接口
// 音乐播放器
public interface MediaPlayer {// 播放void play();// 停止void stop();// 暂停void pause();
}public interface CDPlayer {void playCD(String title);void stopCD();// 弹出void ejectCD();
}// 收音机
public interface Radio {// 频道void tuneFrequency(int frequency);void turnOn();void turnOff();
}2.实现子系统组件
public class CDPlayerImpl implements CDPlayer {Overridepublic void playCD(String title) {System.out.println(Playing CD: title);}Overridepublic void stopCD() {System.out.println(Stopping CD playback.);}Overridepublic void ejectCD() {System.out.println(Ejecting CD.);}
}public class RadioImpl implements Radio {Overridepublic void tuneFrequency(int frequency) {System.out.println(Tuning radio to frequency: frequency);}Overridepublic void turnOn() {System.out.println(Turning on the radio.);}Overridepublic void turnOff() {System.out.println(Turning off the radio.);}
}3.创建音乐播放系统的外观类Facade封装子系统组件的操作
public class MusicPlayerFacade {private CDPlayer cdPlayer;private Radio radio;public MusicPlayerFacade(CDPlayer cdPlayer, Radio radio) {this.cdPlayer cdPlayer;this.radio radio;}public void playCD(String title) {cdPlayer.playCD(title);}public void stopMusic() {cdPlayer.stopCD();radio.turnOff();}public void playRadio(int frequency) {radio.turnOn();radio.tuneFrequency(frequency);}
}4.在客户端代码中通过外观类 MusicPlayerFacade 简化对音乐播放系统的操作
public class MusicPlayerDemo {public static void main(String[] args) {CDPlayer cdPlayer new CDPlayerImpl();Radio radio new RadioImpl();MusicPlayerFacade musicPlayer new MusicPlayerFacade(cdPlayer, radio);musicPlayer.playCD(My Favorite Album);musicPlayer.stopMusic();musicPlayer.playRadio(103.Ⅲ);}
}运行 MusicPlayerDemo 类的 main 方法输出结果应为
Playing CD: My Favorite Album
Stopping CD playback.
Turning off the radio.
Tuning radio to frequency: 103.Ⅲ在这个示例中MusicPlayerFacade 类作为外观角色为 CDPlayer 和 Radio 子系统提供了简洁的接口使得客户端无需直接与子系统交互简化了系统的使用。