最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計模式之外觀模式示例詳解

 更新時間:2022年03月02日 16:54:33   作者:溫故知新之java  
外觀模式為多個復(fù)雜的子系統(tǒng),提供了一個一致的界面,使得調(diào)用端只和這個接口發(fā)生調(diào)用,而無須關(guān)系這個子系統(tǒng)內(nèi)部的細(xì)節(jié)。本文將通過示例詳細(xì)為大家講解一下外觀模式,需要的可以參考一下

定義

外觀模式為多個復(fù)雜的子系統(tǒng),提供了一個一致的界面,使得調(diào)用端只和這個接口發(fā)生調(diào)用,而無須關(guān)系這個子系統(tǒng)內(nèi)部的細(xì)節(jié)

案例

需求

看電影的時候需要進(jìn)行一系列的操作,比如打開播放器,放下屏幕,打開投影儀,打開音響等,這個要怎么進(jìn)行管理呢

方案:外觀模式實現(xiàn)

定義播放器類

public class Player {

    private static Player player = new Player();

    private Player(){}

    public static Player getInstance(){

        return player;
    }

    public void on(){
        System.out.println("打開播放器");
    }

    public void off(){
        System.out.println("關(guān)閉播放器");
    }

    public void play(){
        System.out.println("使用播放器播放電影");
    }

    public void pause(){
        System.out.println("暫停播放器");
    }

    public void select(){
        System.out.println("選擇喜歡的電影");
    }
}

定義投影儀類

public class Projector {

    private static Projector projector = new Projector();

    private Projector(){}

    public static Projector getInstance(){

        return projector;
    }

    public void on(){
        System.out.println("放下屏幕,打開投影儀");
    }

    public void off(){
        System.out.println("關(guān)閉投影儀");
    }

    public void focus(){
        System.out.println("調(diào)節(jié)投影儀焦距");
    }

    public void zoom(){
        System.out.println("投影儀變焦");
    }

}

定義音響類

public class Stereo {

    private static Stereo stereo = new Stereo();

    private Stereo(){}

    public static Stereo getInstance(){
        return stereo;
    }

    public void on(){
        System.out.println("打開音響");
    }

    public void off(){
        System.out.println("關(guān)閉音響");
    }

    public void setVolume(){
        System.out.println("調(diào)節(jié)音響音量");
    }
}

定義爆米花機類

/**
 * 爆米花機
 * @author:liyajie
 * @createTime:2022/3/2 14:24
 * @version:1.0
 */
public class Popcorn {

    private static Popcorn popcorn = new Popcorn();

    private Popcorn(){}

    public static Popcorn getInstance(){
        return popcorn;
    }

    public void on(){
        System.out.println("打開爆米花機");
    }

    public void off(){
        System.out.println("關(guān)閉爆米花機");
    }

    public void pop(){
        System.out.println("制作爆米花");
    }
}

定義家庭影院外觀類

public class HomeTheaterFacade {

    // 聚合各個子系統(tǒng)
    private Player player;

    private Popcorn popcorn;

    private Projector projector;

    private Stereo stereo;

    public HomeTheaterFacade(){

    }

    // 全參構(gòu)造器
    public HomeTheaterFacade(Player player, Popcorn popcorn,Projector projector,Stereo stereo){
        this.player = player;
        this.popcorn = popcorn;
        this.projector = projector;
        this.stereo = stereo;
    }

    // 準(zhǔn)備階段
    public void ready(){
        popcorn.on();
        player.on();
        projector.on();
        stereo.on();
    }

    // 播放
    public void play(){
        player.select();
        popcorn.pop();
        projector.focus();
        stereo.setVolume();
    }

    // 結(jié)束
    public void end(){
        player.off();
        popcorn.off();
        projector.off();
        stereo.off();
    }
}

定義測試類

public class Test {
    public static void main(String[] args) {
        HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade(Player.getInstance(),Popcorn.getInstance(),Projector.getInstance(),Stereo.getInstance());
        homeTheaterFacade.ready();
        homeTheaterFacade.play();
        homeTheaterFacade.end();
    }
}

查看測試結(jié)果

分析

我們通過家庭影院外觀類HomeTheaterFacade的ready,play,end方法操作了播放器,投影儀等的打開,關(guān)閉,對于家庭影院外觀類來說,他是不需要知道播放器,投影儀等的打開,關(guān)閉具體是怎么樣實現(xiàn)的。在一定程度上實現(xiàn)了解耦,易維護和擴展。

總結(jié)

優(yōu)勢:

1.外觀模式對外屏蔽了子系統(tǒng)的實現(xiàn)細(xì)節(jié)(安全性)

2.外觀模式降低了客戶端與子系統(tǒng)交互的復(fù)雜性,對客戶端和子系統(tǒng)進(jìn)行解耦合,子系統(tǒng)內(nèi)部的模塊更容易維護和擴展

3.通過合理的使用外觀模式,可以幫助我們更好的劃分訪問層次

使用場景

1.對分層的系統(tǒng)進(jìn)行構(gòu)建時,使用外觀模式可以簡化子系統(tǒng)之間的依賴關(guān)系

2.當(dāng)有一個復(fù)雜的系統(tǒng),里面有很多子系統(tǒng),有大量的操作,這時候可以使用外觀模式

3.當(dāng)客戶端與多個子系統(tǒng)之間存在很多耦合時,引入外觀模式,可以將他們分離,提高子系統(tǒng)的獨立性和可移植性

以上就是Java設(shè)計模式之外觀模式示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Java外觀模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

镶黄旗| 故城县| 灵璧县| 武平县| 论坛| 通化县| 南昌县| 万宁市| 边坝县| 山阴县| 南投县| 永吉县| 刚察县| 略阳县| 汨罗市| 淮安市| 玉田县| 那坡县| 镇江市| 中西区| 湄潭县| 三明市| 太原市| 阿克苏市| 浦江县| 林甸县| 布尔津县| 洪江市| 门头沟区| 巴青县| 静安区| 汉源县| 余姚市| 沙坪坝区| 邵东县| 昌图县| 宜昌市| 文山县| 奉化市| 咸丰县| 板桥市|