Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
El patrón de diseño de fachada, también conocido como patrón de apariencia, es un patrón de diseño estructural que se utiliza principalmente para proporcionar una interfaz unificada de alto nivel para un conjunto de interfaces en un subsistema, lo que hace que el subsistema sea más fácil de usar. La siguiente es una introducción detallada al patrón de diseño Fachada:
El patrón Facade proporciona una interfaz externa para múltiples subsistemas complejos, lo que facilita el acceso a estos subsistemas. Este modo tiene una interfaz unificada con el mundo exterior y las aplicaciones externas no necesitan preocuparse por los detalles internos del subsistema, lo que reduce en gran medida la complejidad de la aplicación y mejora la capacidad de mantenimiento.
Diagrama de clase:
El modo fachada incluye principalmente los siguientes tres roles:
En un sistema de cine en casa, el modo Fachada se puede utilizar para simplificar las operaciones del usuario. Por ejemplo, los usuarios sólo necesitan utilizar un control remoto (clase Facade) para controlar proyectores, parlantes, reproductores de DVD y otros dispositivos (subsistemas) sin tener que operar estos dispositivos por separado.
- // 投影仪接口
- 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();
- }
- }
En este ejemplo, puede ver el modo fachada, que es particularmente adecuado para usar múltiples componentes para ensamblar procesos fijos y reducir la complejidad de las llamadas de los clientes.
El patrón de diseño Facade es un patrón de diseño muy práctico que reduce la complejidad del sistema y mejora la facilidad de uso y la flexibilidad del sistema al proporcionar una interfaz unificada para los subsistemas. Sin embargo, también es necesario ser consciente de las posibles deficiencias y riesgos al utilizar este modelo.
Si este modo te resulta útil, recuerda darle me gusta y recopilarlo.