第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java設(shè)計(jì)模式(11)----------外觀模式

1、介绍

外观模式是一种结构型设计模式。在外观模式中,外观类中提供一个或者一组对外的接口。客户端对于复杂系统的访问是通过外观类的接口进行的,从而解除了客户端与复杂系统之间的耦合,隐藏了复杂系统内部的逻辑。

该设计模式主要解决客户端与复杂系统内部子系统的沟通成本高的问题,通过外观类,简化了沟通流程,降低沟通成本。

主要的应用场景有:1、医院的接待员(外观类)。通过接待员,可以实现挂号、缴费和取药等一系列的动作,化繁为简。2、电脑启动。通过按一下启动键就可以启动电脑,而不需要我们挨个的给硬盘、cpu和内存上电。其应用场景,抽象来说,就是存在一个总管或者接待员的角色,帮助我们更高效的进行某种行为或者操作。

2、案例
2.1、背景

智能家居是一个比较火的领域。我们的屋子里边会配置电器(复杂系统),每种电器,比如日光灯,电视,空调,冰箱(子系统)等都具有自己的开关。借助智能家居的思想,我们可以在手机上安装一个app,通过app(外观类)控制如上这些电器的开启和关闭。

2.2、实现

图片描述

定义复杂系统和子系统

/**
 * 电器抽象
 */
public interface appliance
{
    void powerOn();
    void powerOff();
}
public class AirConditioning implements appliance
{
    @Override public void powerOn()
    {
        System.out.println("打开空调。");
    }

    @Override public void powerOff()
    {
        System.out.println("关闭空调。");
    }
}
public class Lamp implements appliance
{
    @Override public void powerOn()
    {
        System.out.println("打开台灯。");
    }

    @Override public void powerOff()
    {
        System.out.println("关闭台灯。");
    }
}
public class Refrigerator implements appliance
{
    @Override public void powerOn()
    {
        System.out.println("打开冰箱。");
    }

    @Override public void powerOff()
    {
        System.out.println("关闭冰箱。");
    }
}
public class TV implements appliance
{
    @Override public void powerOn()
    {
        System.out.println("打开电视。");
    }

    @Override public void powerOff()
    {
        System.out.println("关闭电视。");
    }
}

定义外观类

外观类中形成统一的界面,包含子系统的所有对外功能,用于呈现给客户端使用。

public class App
{
    private Lamp lamp;
    private Refrigerator refrigerator;
    private TV tv;
    private AirConditioning airConditioning;

    public App()
    {
        this.lamp = new Lamp();
        this.refrigerator = new Refrigerator();
        this.tv = new TV();
        this.airConditioning = new AirConditioning();
    }

    public void powerOnAppliance()
    {
        this.airConditioning.powerOn();
        this.lamp.powerOn();
        this.refrigerator.powerOn();
        this.tv.powerOn();
        System.out.println("");
    }

    public void powerOffAppliance()
    {
        this.airConditioning.powerOff();
        this.lamp.powerOff();
        this.refrigerator.powerOff();
        this.tv.powerOff();
        System.out.println("");
    }

    public void powerOnLamp()
    {
        this.lamp.powerOn();
    }

    public void powerOffLamp()
    {
        this.lamp.powerOff();
    }
}

验证程序

/**
 * 验证
 */
public class Demo
{
    public static void main(String[] args)
    {
        App app = new App();
        app.powerOnLamp();
        app.powerOnAppliance();
        app.powerOffLamp();
    }
}

运行结果

打开台灯。
打开空调。
打开台灯。
打开冰箱。
打开电视。

关闭台灯。

Process finished with exit code 0

3、总结

优点:将客户端与复杂系统解耦,简化了使用流程。

缺点:不引入抽象外观类的情况,违背了开闭原则。

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開(kāi)發(fā)工程師
手記
粉絲
1萬(wàn)
獲贊與收藏
1426

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消