Rumah  >  Artikel  >  Java  >  Corak Reka Bentuk Java: Analisis Contoh Corak Rupa

Corak Reka Bentuk Java: Analisis Contoh Corak Rupa

WBOY
WBOYke hadapan
2023-04-20 15:49:081017semak imbas

Pengenalan mod

  • Mod fasad, juga dipanggil "Mod proses: Mod fasad menyediakan antara muka yang konsisten untuk set antara muka dalam subsistem , mod ini mentakrifkan antara muka peringkat tinggi yang menjadikan subsistem ini lebih mudah digunakan

  • Mod penampilan digunakan untuk melindungi subsistem dalaman dengan menentukan antara muka yang konsisten, supaya pemanggil hanya perlu membuat panggilan ke antara muka ini tanpa mengambil berat tentang butiran dalaman subsistem ini

gambar rajah kelas UML

Corak Reka Bentuk Java: Analisis Contoh Corak Rupa

Analisis gambar rajah kelas:

  • Fasad: Menyediakan antara muka panggilan bersatu untuk akhir panggilan Apakah yang diketahui oleh kelas penampilan? bertanggungjawab untuk memproses permintaan, dengan itu memproksi permintaan pemanggil kepada objek subsistem yang sesuai

  • Pelanggan
  • : pemanggil antara muka penampilan

    Koleksi SubSystem

    : merujuk kepada modul atau subsistem, yang mengendalikan tugas yang diberikan oleh objek Fasad Ia adalah penyedia sebenar fungsi
  • Mod penampilan:

  • Pengenalan latar belakang:

Menyediakan teater rumah: pemain DVD, projektor, skrin automatik, bunyi sekeliling, mesin popcorn, diperlukan untuk melengkapkan penggunaan teater rumah Fungsi dikawal secara langsung dengan menggunakan alat kawalan jauh (menyelaraskan suis setiap peranti).

Hidupkan projektor

    Hidupkan stereo
  • Hidupkan DVD, pilih dvd
  • Dapatkan popcorn
  • Malapkan lampu
  • Main
  • Selepas menonton filem, matikan semua peranti.

Corak Reka Bentuk Java: Analisis Contoh Corak Rupa

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

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("爆米花做好了...");
    }
}
Keputusan yang dicapai:
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(统筹各设备开关)Nota dan butiran mod penampilan

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();
    }
}

Client(测试)Mod penampilan

melindungi butiran subsistem dari luar
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();
    }
}
, jadi mod penampilan mengurangkan klien Kerumitan penggunaan subsistem

Mod penampilan memisahkan hubungan gandingan antara klien dan subsistem, menjadikan modul dalam subsistem lebih mudah untuk diselenggara dan dikembangkan

Corak Reka Bentuk Java: Analisis Contoh Corak Rupa

Dengan menggunakan mod penampilan dengan sewajarnya, kami boleh

membahagikan tahap akses dengan lebih baik
    apabila sistem perlu direka bentuk secara berlapis Apabila mengekalkan sistem warisan yang besar, anda boleh mempertimbangkan untuk menggunakan Fasad corak. Apabila mengekalkan sistem warisan yang besar, ia mungkin menjadi sangat sukar untuk dikekalkan dan dikembangkan Pada masa ini, anda boleh mempertimbangkan untuk membangunkan sistem baharu yang menyediakan antara muka yang agak jelas dan mudah untuk sistem warisan berinteraksi dengan kelas Fasad dan meningkatkan kebolehgunaan semula.
  • Jangan gunakan mod penampilan secara berlebihan atau tidak munasabah Adalah lebih baik menggunakan mod penampilan atau hubungi modul secara terus. Tujuannya adalah untuk menjadikan sistem berhierarki dan memudahkan penyelenggaraan.

Atas ialah kandungan terperinci Corak Reka Bentuk Java: Analisis Contoh Corak Rupa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam