设计模式-外观模式

模式介绍

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

角色划分

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

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

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();
    }
}
相关推荐
未秃头的程序猿17 小时前
@ConditionalOnMissingBean 把我配好的 RabbitMQ 手动 ack 吃掉了
后端·rabbitmq
回家路上绕了弯17 小时前
当 AI 成为队友:团队协作使用 AI 的实践与思考
后端
陈随易17 小时前
副业搞钱点子之独立开发
前端·后端·程序员
MetaLite17 小时前
Spring Boot 加了 @Valid,嵌套参数为什么还没校验?
java·spring boot·后端
霸道流氓气质17 小时前
Lingua 语言检测库:n-gram 统计模型、置信度阈值调优与 Spring Boot 分层检测管道的生产级实战
java·spring boot·后端
geovindu18 小时前
rust: Read-Write Lock Pattern
开发语言·后端·设计模式·rust·读写锁模式·同步型模式
怪我冷i18 小时前
Rust智能指针Rc<T> 使用总结
开发语言·后端·rust
万少18 小时前
Harmony 7.0 这个skill帮你自动化操作AGC
前端·javascript·后端
huaweichenai18 小时前
spring boot对接kafka实现消息队列处理
spring boot·后端·kafka
treasure14018 小时前
Django复习笔记(2026年10月)
后端·python·django·api·web·drf