自己做网站建议,四川建设局网站首页,潮州营销型网站建设推广,海南疾控发布问卷调查文章目录 一、什么是外观模式二、外观模式结构1、外观模式的主要角色包括#xff1a;2、外观模式通常适用于以下情况#xff1a; 三、优点 一、什么是外观模式
外观模式#xff08;Facade Pattern#xff09;是一种结构型设计模式#xff0c;它提供了一个统一的接口… 文章目录 一、什么是外观模式二、外观模式结构1、外观模式的主要角色包括2、外观模式通常适用于以下情况 三、优点 一、什么是外观模式
外观模式Facade Pattern是一种结构型设计模式它提供了一个统一的接口用来访问系统中的一群接口从而简化客户端与系统之间的交互。外观模式通过引入一个外观类来封装子系统的复杂性使得客户端只需要与外观类交互而无需直接与子系统的各个组件打交道。
在外观模式中外观类充当了客户端与子系统之间的中介者隐藏了子系统的复杂性为客户端提供了一个更简单和统一的接口。客户端通过外观类来访问系统的功能而不需要了解系统内部各个组件之间的关系和调用方式。
二、外观模式结构
1、外观模式的主要角色包括
外观类Facade对客户端提供简单接口的类负责将客户端的请求转发给子系统中相应的对象处理。子系统Subsystems由多个组件或类组成的复杂系统外观类封装了这些组件的功能。
2、外观模式通常适用于以下情况
当系统中存在复杂的子系统需要提供一个简单统一的接口给客户端使用时。当需要将系统的各个组件解耦减少它们之间的依赖关系时。
简单的示例
// 子系统组件
class MusicPlayer {public void play() {System.out.println(Playing music);}
}class Amplifier {public void on() {System.out.println(Amplifier on);}public void off() {System.out.println(Amplifier off);}
}class Speaker {public void open() {System.out.println(Speaker open);}public void close() {System.out.println(Speaker close);}
}// 外观类
class AudioFacade {private MusicPlayer musicPlayer;private Amplifier amplifier;private Speaker speaker;public AudioFacade() {this.musicPlayer new MusicPlayer();this.amplifier new Amplifier();this.speaker new Speaker();}public void startMusic() {amplifier.on();speaker.open();musicPlayer.play();}public void stopMusic() {musicPlayer.stop();speaker.close();amplifier.off();}
}// 客户端代码
public class Main {public static void main(String[] args) {AudioFacade audioFacade new AudioFacade();audioFacade.startMusic();}
}
三、优点
外观模式的优点包括
简化接口客户端只需与外观类交互无需了解系统的复杂性。解耦客户端和子系统外观类作为中介者降低了客户端和子系统之间的耦合度。提高灵活性可以随时修改外观类以适应系统变化而不会影响客户端代码。