Heim  >  Artikel  >  Java  >  Java-Entwurfsmuster: Beispielanalyse für Erscheinungsmuster

Java-Entwurfsmuster: Beispielanalyse für Erscheinungsmuster

WBOY
WBOYnach vorne
2023-04-20 15:49:08981Durchsuche

Einführung in den Modus

  • Fassadenmodus, auch „Prozessmodus“ genannt: Der Fassadenmodus bietet eine Reihe von Schnittstellen im Subsystem. Konsistente Schnittstelle #🎜🎜 #, dieses Muster definiert eine High-Level-Schnittstelle, die die Verwendung dieses Subsystems erleichtert die Details des internen Subsystems, sodass der Anrufer nur Aufrufe an diese Schnittstelle tätigen muss, ohne sich um die internen Details dieses Subsystems

  • #🎜 🎜#
  • UML zu kümmern Klassendiagramm

Klassendiagrammanalyse:

# 🎜🎜#Java-Entwurfsmuster: Beispielanalyse für Erscheinungsmuster

Facade

: Stellt eine einheitliche Aufrufschnittstelle für den Aufrufer bereit. Die Fassadenklasse weiß, welche Subsysteme für die Verarbeitung von Anforderungen verantwortlich sind, und leitet so die Anforderung des Aufrufers an das entsprechende Subsystemobjekt weiter.

Client
    : Der Aufrufer der SubSystem-Sammlung
  • : bezieht sich auf das Modul oder Subsystem, das die vom Facade-Objekt zugewiesenen Aufgaben übernimmt ist der eigentliche Anbieter der Funktion. 🎜#

    Hintergrundeinführung:

  • Heimkino einrichten: DVD-Player, Projektor, automatische Leinwand, Surround-Sound, Popcornmaschine, erforderlich, um die Verwendung abzuschließen. Die Funktion des Heimkinos wird direkt über die Fernbedienung gesteuert (Koordinierung der Schalter jedes Geräts). Der Vorgang ist:
  • #🎜🎜 #Popcornmaschine öffnen#🎜🎜 #

  • Leinwand abstellen
  • Projektor einschalten

    # 🎜🎜#
Ton einschalten#🎜 🎜#

Öffnen Sie die DVD und wählen Sie DVD aus

# 🎜🎜#Hol dir Popcorn

  • Dimme das Licht

  • Spielen

    # 🎜🎜#
  • Nachdem Sie den Film angesehen haben, schalten Sie alle Geräte aus für DVD, Popcorn, Projektor, Leinwand, Stereoanlage und TheaterLicht lauten wie folgt:# 🎜🎜#
    public class DVDPlayer {
        // 使用单例模式
        private static  final DVDPlayer instance = new DVDPlayer();
        private DVDPlayer() {}
        public static DVDPlayer getInstance() {
            return instance;
        }
        public void on() {
            System.out.println("dvd 打开了...");
        }
        public void off() {
            System.out.println("dvd 关闭了...");
        }
        public void play() {
            System.out.println("dvd 播放中...");
        }
        public void pause() {
            System.out.println("dvd 暂停了...");
        }
    }
    public class Popcorn {
        private static final Popcorn instance = new Popcorn();
        private Popcorn(){}
        public static Popcorn getInstance() {
            return instance;
        }
        public void on() {
            System.out.println("爆米花机打开了...");
        }
        public void off() {
            System.out.println("爆米花机关闭了...");
        }
        public void pop() {
            System.out.println("爆米花做好了...");
        }
    }
    public class Projector {
        private static final Projector instance = new Projector();
        private Projector(){}
        public static Projector getInstance() {
            return instance;
        }
        public void on() {
            System.out.println("投影仪打开了...");
        }
        public void off() {
            System.out.println("投影仪关闭了...");
        }
        public void focus() {
            System.out.println("投影仪聚焦中...");
        }
    }
    public class Screen {
        private static final Screen instance = new Screen();
        private Screen(){}
        public static Screen getInstance() {
            return instance;
        }
        public void up() {
            System.out.println("屏幕上升...");
        }
        public void down() {
            System.out.println("屏幕下降...");
        }
    }
    public class Stereo {
        private static final Stereo instance = new Stereo();
        private Stereo(){}
        public static Stereo getInstance() {
            return instance;
        }
        public void on() {
            System.out.println("立体音响打开...");
        }
        public void off() {
            System.out.println("立体音响关闭...");
        }
        public void up() {
            System.out.println("立体音响音量+...");
        }
        public void down() {
            System.out.println("立体音响音量-...");
        }
    }
    public class TheaterLight {
        private static final TheaterLight instance = new TheaterLight();
        private TheaterLight(){}
        public static TheaterLight getInstance() {
            return instance;
        }
    
        public void on() {
            System.out.println("灯光打开...");
        }
        public void off() {
            System.out.println("灯光关闭...");
        }
        public void dim() {
            System.out.println("灯光亮度调暗...");
        }
        public void bright() {
            System.out.println("灯光亮度调亮...");
        }
    }
  • HomeTheaterFacade (koordiniert die Schalter jedes Geräts)

    public class HomeTheaterFacade {
        private DVDPlayer dvdPlayer;
        private Popcorn popcorn;
        private Projector projector;
        private Stereo stereo;
        private Screen screen;
        private TheaterLight theaterLight;
        public HomeTheaterFacade() {
            this.dvdPlayer = DVDPlayer.getInstance();
            this.popcorn = Popcorn.getInstance();
            this.projector = Projector.getInstance();
            this.stereo = Stereo.getInstance();
            this.screen = Screen.getInstance();
            this.theaterLight = TheaterLight.getInstance();
        }
    
        /**
         * 准备开始
         */
        public void ready() {
            popcorn.on();
            popcorn.pop();
            screen.down();
            projector.on();
            projector.focus();
            stereo.on();
            dvdPlayer.on();
            theaterLight.dim();
        }
    
        /**
         * 播放
         */
        public void play() {
            dvdPlayer.play();
        }
    
        /**
         * 暂停
         */
        public void pause() {
            dvdPlayer.pause();
        }
    
        /**
         * 结束
         */
        public void end() {
            popcorn.off();
            theaterLight.bright();
            screen.up();
            projector.off();
            stereo.off();
            dvdPlayer.off();
        }
    }

    Kunde(test)
  • public class Client {
        public static void main(String[] args) {
            HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade();
            System.out.println("----------准备开始-----------");
            homeTheaterFacade.ready();
            System.out.println("----------开始播放-----------");
            homeTheaterFacade.play();
            System.out.println("----------播放暂停-----------");
            homeTheaterFacade.pause();
            System.out.println("----------播放结束-----------");
            homeTheaterFacade.end();
        }
    }
    #🎜🎜 #
  • Erfolgsergebnisse:

  • #🎜🎜 #

    Hinweise und Details zum Darstellungsmodus

  • #🎜🎜 #
  • Erscheinungsmodus

    Die Details des Subsystems sind von außen abgeschirmt

    , also die Der Darstellungsmodus reduziert die Komplexität der Nutzung des Subsystems durch den Client.
  • Der Erscheinungsmodus entkoppelt die Kopplungsbeziehung zwischen dem Client und dem Subsystem, wodurch die Module innerhalb des Subsystems einfacher zu warten und zu erweitern sind
  • # 🎜🎜#

    Durch die richtige Verwendung des Darstellungsmodus können wir die Zugriffsebenen besser

    aufteilen
  • .
  • Wenn das System ein mehrschichtiges Design erfordert, können Sie die Verwendung des Fassadenmodus in Betracht ziehen.

Java-Entwurfsmuster: Beispielanalyse für Erscheinungsmuster

Bei der Wartung eines älteren Großsystems kann es sehr schwierig geworden sein, das System zu warten und zu erweitern. Zu diesem Zeitpunkt können Sie die Entwicklung einer Fassadenklasse in Betracht ziehen Das neue System bietet eine relativ klare und einfache Schnittstelle zum Altsystem, die es dem neuen System ermöglicht, mit der Facade-Klasse zu interagieren, um die Wiederverwendbarkeit zu verbessern.

DVD、Popcorn、Projector、Screen、Stereo、TheaterLight代码如下:

rrreeerrreeerrreeerrreeerrreeerrreee

HomeTheaterFacade(统筹各设备开关)

rrreee

Client(测试)

Verwenden Sie den Darstellungsmodus nicht übermäßig oder unangemessen. Es ist besser, den Darstellungsmodus zu verwenden oder das Modul direkt aufzurufen. Der Zweck besteht darin, das System hierarchisch zu gestalten und die Wartung zu erleichtern.

Das obige ist der detaillierte Inhalt vonJava-Entwurfsmuster: Beispielanalyse für Erscheinungsmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen