设计模式-外观模式

模式介绍

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

角色划分

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

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

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();
    }
}
相关推荐
冷月半明16 小时前
从 0 到 1 打造永不掉线的爬虫调度器:APScheduler + FastAPI 实战全纪录
后端·爬虫
现在没有牛仔了16 小时前
SpringBoot项目集成Swagger指南
spring boot·后端·swagger
麦兜*16 小时前
MongoDB 事务管理:多文档操作如何保证 ACID?
java·数据库·后端·mongodb·spring cloud·springboot
码事漫谈16 小时前
C++中的“平凡”之美:std::unique_ptr源码探秘
后端
努力的小郑16 小时前
MySQL 基础架构(一):SQL语句的执行之旅
后端·mysql·架构
柑木16 小时前
数据库-MySQL-MySQL的权限管理机制(USER/ROLE/GRANT/REVOKE)
数据库·后端·数据分析
AAA修煤气灶刘哥16 小时前
微服务网关:别再让接口 “各自为战”!Gateway 实战 + 鉴权全攻略
java·后端·spring cloud
这里有鱼汤16 小时前
从0开始:如何用miniQMT跑起最小的实盘策略
后端·python
Goboy17 小时前
有人敲门,开水开了,电话响了,孩子哭了,你先顾谁?
后端·面试·架构