当前位置: 首页 > news >正文

Kotlin~Facade

概念

又称门面模式,为复杂系统提供简单交互接口。

角色介绍

  • Facade:外观类,供客户端调用,将请求委派给响应的子系统。
  • SubSystem:子系统,独立的子设备或子类

UML

在这里插入图片描述

代码实现

class Light(val name: String) {fun turnOn() {println("${name}灯打开")}fun turnOff() {println("${name}灯关闭")}
}class TV {fun power(boolean: Boolean) {println("电视电源${boolean}")}
}class AirConditioner {fun open() {println("空调打开")}fun sleep() {println("空调睡眠")}fun close() {println("空调关闭")}
}
class SmartSceneFacade {private val lights = arrayListOf<Light>(Light("客厅"), Light("卧室"))private val tv = TV()private val airConditioner = AirConditioner()fun goHome() {println("回家场景:")lights[0].turnOn()airConditioner.open()}fun goToWork() {println("去上班:")for (light in lights) {light.turnOff()}tv.power(false)airConditioner.close()}fun nightSleep() {println("要睡觉了:")for (light in lights) {light.turnOff()}tv.power(false)airConditioner.sleep()}
}fun main() {val smartSceneFacade = SmartSceneFacade()smartSceneFacade.goToWork()smartSceneFacade.goHome()smartSceneFacade.nightSleep()
}

优缺点

优点

  • 简化交互方式
  • 解耦合
  • 提高可维护性

缺点

  • 不合符开闭原则
  • 隐藏潜在问题

应用场景

子系统接口复杂,需要将子系统划分为多个层次,解偶客户端与子系统

  • 复杂的lib
  • 扩平台的程序
  • 电商系统

总结

外观模式相当于在子类上又包了一层,是迪米特法则的典型应用。

http://www.lryc.cn/news/106095.html

相关文章:

  • 服务配置文件/var/lib/systemd与/etc/systemd/
  • 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(一)
  • 【牛客网】二叉搜索树与双向链表
  • Oracle免费在线编程:Oracle APEX
  • C#+WPF上位机开发(模块化+反应式)
  • 【LeetCode 算法】Card Flipping Game 翻转卡片游戏-阅读题
  • 【leetcode】138.复制带随机指针的链表
  • svn工具使用
  • SpringBoot项目使用MyBatisX+Apifox IDEA 插件快速开发
  • Redis数据结构
  • 解密Redis:应对面试中的缓存相关问题
  • 读取application-dev.properties的中文乱码【bug】
  • Linux(centos7)如何实现配置iscsi存储多路径 及DM-Multipath的配置文件概述
  • DK7 vs JDK8 vs JDK11特性和功能的对比
  • 你觉得企业为什么需要数据分析?
  • SVN学习
  • vim怎么使用,vim使用教程,vimtutor怎么切换中文 汉化
  • [golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联
  • 2023-07-31力扣每日一题
  • 接口自动化报告,生成本地服务并自动打开时失败
  • Git 的基本概念和使用方式
  • 【JVM】(三) 深入理解JVM垃圾回收机制(GC)
  • Flink CEP(二) 运行源码解析
  • 剑指Offer-学习计划(四)双指针(下)
  • 深度学习——常见注意力机制
  • Python 进阶(七):高级文件操作(shutil 模块)
  • 保留网络:大型语言模型的Transformer继任者
  • 算法通关村第二关——反转链表青铜笔记
  • 【Linux】——线程安全
  • [React]生命周期