设计模式-外观模式

模式介绍

门面模式有叫做外观模式是属于结构型模式的一种,对外提供顶级的一个接口,通过这个顶级接口访问下面的子系统。

角色划分

外观角色:多个子系统对外提供一个公共的接口

子系统角色:实现系统的部分功能,客户可以通过外观角色进行访问

UML

使用场景

门面模式的使用场景,暂时没有好的例子

案例:例如医院的导诊台就是一个门面,通过这个门面可以去到我们想要去的科室

案例实现

1、外观类

csharp 复制代码
public class HospitalFacde {
    private Register register;
    private Operation operation;
    private Dispensary dispensary;
    public HospitalFacde(){
        register = new Register();
        operation = new Operation();
        dispensary = new Dispensary();
    }
    public void register(){
        register.work();
    }
    public void operation(){
        operation.work();
    }
    public void dispensary(){
        dispensary.work();
    }
}

2、子系统角色

手术系统

typescript 复制代码
public class Operation implements Hospital{

    @Override
    public void work() {
        System.out.println("代领患者去手术室...");
    }
}

挂号系统

typescript 复制代码
public class Register implements Hospital{
    @Override
    public void work() {
        System.out.println("带领患者去挂号...");
    }
}

取药系统

typescript 复制代码
public class Dispensary implements Hospital{
    @Override
    public void work() {
        System.out.println("带领患者抓药...");
    }
}

3、客户端

typescript 复制代码
public class ClientPatient{
    public static void main(String[] args) {
        HospitalFacde hospitalFacde = new HospitalFacde();
        hospitalFacde.register();
        hospitalFacde.operation();
        hospitalFacde.dispensary();
    }
}
相关推荐
2601_962055975 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
Lost of 程序猿6 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
QQ_21696290967 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
郑州光合科技余经理8 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒9 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
大辉狼_音频架构10 小时前
进阶:从源码编译 SOF 固件与 topology
后端
大辉狼_音频架构10 小时前
上板:让 SOF 在 FRDM-i.MX8MP 上跑起来
后端
大辉狼_音频架构10 小时前
FRDM-IMX8MP UUU 烧录 eMMC 指南
后端
运行时异常11 小时前
【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
java·后端
LinMINGJing00711 小时前
PageHeaderData:Page 的页面头
后端