내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
외관 패턴이라고도 알려진 파사드 디자인 패턴은 주로 서브시스템의 인터페이스 세트에 대해 통합된 상위 수준 인터페이스를 제공하여 서브시스템을 더 쉽게 사용할 수 있도록 하는 데 사용됩니다. 다음은 Facade 디자인 패턴에 대한 자세한 소개입니다.
Facade 패턴은 여러 복잡한 하위 시스템에 대한 외부 인터페이스를 제공하여 이러한 하위 시스템에 더 쉽게 액세스할 수 있도록 합니다. 이 모드에는 외부 세계에 대한 통합 인터페이스가 있으며 외부 애플리케이션은 하위 시스템의 내부 세부 사항에 신경 쓸 필요가 없으므로 애플리케이션의 복잡성이 크게 줄어들고 유지 관리성이 향상됩니다.
클래스 다이어그램:
파사드 모드에는 주로 다음 세 가지 역할이 포함됩니다.
홈 시어터 시스템에서는 Facade 모드를 사용하여 사용자 작업을 단순화할 수 있습니다. 예를 들어, 사용자는 프로젝터, 스피커, DVD 플레이어 및 기타 장치(하위 시스템)를 별도로 작동할 필요 없이 하나의 리모컨(Facade 클래스)만 사용하면 됩니다.
- // 投影仪接口
- interface Projector {
- void on();
- void off();
- void focus();
- void wideScreenMode();
- }
-
- // 投影仪实现类
- class SimpleProjector implements Projector {
- @Override
- public void on() {
- System.out.println("Projector is on");
- }
-
- @Override
- public void off() {
- System.out.println("Projector is off");
- }
-
- @Override
- public void focus() {
- System.out.println("Adjusting projector focus");
- }
-
- @Override
- public void wideScreenMode() {
- System.out.println("Switching to wide screen mode");
- }
- }
-
- // DVD播放器接口
- interface DVDPlayer {
- void on();
- void off();
- void play();
- void stop();
- void pause();
- void eject();
- void setTwoChannelAudio();
- void setSurroundAudio();
- }
-
- // DVD播放器实现类
- class SimpleDVDPlayer implements DVDPlayer {
- @Override
- public void on() {
- System.out.println("DVD Player is on");
- }
-
- @Override
- public void off() {
- System.out.println("DVD Player is off");
- }
-
- @Override
- public void play() {
- System.out.println("DVD Player is playing");
- }
-
- @Override
- public void stop() {
- System.out.println("DVD Player stopped");
- }
-
- @Override
- public void pause() {
- System.out.println("DVD Player paused");
- }
-
- @Override
- public void eject() {
- System.out.println("DVD ejected");
- }
-
- @Override
- public void setTwoChannelAudio() {
- System.out.println("Stereo mode is on");
- }
-
- @Override
- public void setSurroundAudio() {
- System.out.println("Surround sound mode is on");
- }
- }
-
- // 音响接口
- interface Amplifier {
- void on();
- void off();
- void setStereoSound();
- void setSurroundSound();
- void setVolume(int volume);
- }
-
- // 音响实现类
- class StereoAmplifier implements Amplifier {
- @Override
- public void on() {
- System.out.println("Amplifier is on");
- }
-
- @Override
- public void off() {
- System.out.println("Amplifier is off");
- }
-
- @Override
- public void setStereoSound() {
- System.out.println("Stereo mode is on");
- }
-
- @Override
- public void setSurroundSound() {
- System.out.println("Surround sound mode is on");
- }
-
- @Override
- public void setVolume(int volume) {
- System.out.println("Setting volume to " + volume);
- }
- }
-
- // 家庭影院Facade类
- class HomeTheaterFacade {
- private Projector projector;
- private DVDPlayer dvdPlayer;
- private Amplifier amplifier;
-
- public HomeTheaterFacade(Projector projector, DVDPlayer dvdPlayer, Amplifier amplifier) {
- this.projector = projector;
- this.dvdPlayer = dvdPlayer;
- this.amplifier = amplifier;
- }
-
- // 提供一个简单的方法来观看电影
- public void watchMovie(String movie) {
- System.out.println("Get ready to watch a movie...");
-
- projector.on();
- projector.wideScreenMode();
-
- amplifier.on();
- amplifier.setSurroundSound();
- amplifier.setVolume(5);
-
- dvdPlayer.on();
- dvdPlayer.play(movie);
-
- System.out.println("Enjoy the movie...");
- }
-
- // 提供一个简单的方法来结束观看
- public void endMovie() {
- System.out.println("Shutting movie theater down...");
-
- projector.off();
- amplifier.off();
- dvdPlayer.stop();
- dvdPlayer.eject();
- dvdPlayer.off();
- }
- }
-
- class Client{
- public static void main(String[] args) {
- Projector projector = new SimpleProjector();
- DVDPlayer dvdPlayer = new SimpleDVDPlayer();
- Amplifier amplifier = new StereoAmplifier();
- HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade(projector,dvdPlayer,amplifier);
- homeTheaterFacade.watchMovie("肖申克的救赎");
- homeTheaterFacade.endMovie();
- }
- }
이 예에서는 여러 구성 요소를 사용하여 고정 프로세스를 조합하고 클라이언트 호출의 복잡성을 줄이는 데 특히 적합한 Facade 모드를 볼 수 있습니다.
Facade 디자인 패턴은 하위 시스템에 대한 통합 인터페이스를 제공하여 시스템 복잡성을 줄이고 시스템 사용 편의성과 유연성을 향상시키는 매우 실용적인 디자인 패턴입니다. 그러나 이 모델을 사용할 때 발생할 수 있는 단점과 위험도 알고 있어야 합니다.
이 모드가 유용하다면 좋아요와 수집을 잊지 마세요.