首页 > 其他分享 >外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统

外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统

时间:2023-06-08 15:00:14浏览次数:45  
标签:外观 复杂性 void ComputerFacade 系统 接口 子系统 println public

外观模式是一种结构型设计模式,它为复杂子系统提供了一个统一的接口,从而使其更易于使用。外观模式隐藏了子系统的复杂性,并将其封装在一个高级接口中。在使用外观模式时,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个组件交互。

// 子系统中的组件
class CPU {
    public void processData() {
        System.out.println("CPU: processing data...");
    }
}

class Memory {
    public void load() {
        System.out.println("Memory: loading data...");
    }
}

class HardDrive {
    public void readData() {
        System.out.println("Hard drive: reading data...");
    }
}

// 外观类
class ComputerFacade {
    private CPU cpu;
    private Memory memory;
    private HardDrive hardDrive;

    public ComputerFacade() {
        this.cpu = new CPU();
        this.memory = new Memory();
        this.hardDrive = new HardDrive();
    }

    public void startComputer() {
        System.out.println("Starting computer...");
        cpu.processData();
        memory.load();
        hardDrive.readData();
        System.out.println("Computer started.");
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        ComputerFacade computer = new ComputerFacade();
        computer.startComputer();
    }
}

在上面的代码中,CPUMemoryHardDrive分别代表子系统中的组件,而ComputerFacade是外观类。

ComputerFacade中,我们将三个子系统组件实例化并暴露一个公共方法startComputer()。客户端只需要调用该方法即可启动计算机,而不需要了解计算机内部的复杂性。

通过使用外观模式,客户端代码变得更加简单,而且如果需要修改或者更新子系统的实现,客户端代码不受影响。

标签:外观,复杂性,void,ComputerFacade,系统,接口,子系统,println,public
From: https://www.cnblogs.com/li053/p/17466499.html

相关文章

  • 如何通过API接口获取淘宝的商品评论
    在淘宝网上购买产品时,人们通常会查看其他客户留下的评价和评论。这些评价和评论对于购买决策非常有帮助,因为它们提供了其他客户的观点和建议。通过使用淘宝API接口,可以轻松地获取淘宝上任何商品的评论。以下是如何获取淘宝商品评论的步骤:注册账号并创建应用在申请获取淘宝商......
  • 【解决方案】DMS驾驶员监测系统自动化测试方案
    什么是DMS?DMS是英文DriverMonitorSystem的缩写,即驾驶员监控系统。主要是实现对驾驶员的身份识别、驾驶员疲劳驾驶以及危险行为的检测功能。目前主流监测方式以通过摄像头等图像传感器获取驾驶员面部图像为基础,运用机器视觉中人脸检测、面部特征点定位等算法技术,对......
  • 汽车电子系统及其功能介绍
    汽车电子系统是指在现代汽车中应用的各种电子设备和系统,用于控制和监测车辆的各个方面。下面是一些常见的汽车电子系统及其功能的简要介绍:1、发动机管理系统(EngineManagementSystem):控制和监测发动机的运行,包括燃油供给、点火、气缸喷射、排放控制等。2、制动防抱死系统(Antilo......
  • springboot 引入jackson-dataformat-xml 接口都返回XML了
    springboot版本2.6.10springboot引入acksonDataformatXML后原本返回json的却返回xml<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>————————————————解......
  • hncloud:常见的美国服务器操作系统
    常见的美国服务器操作系统包括:WindowsServer:WindowsServer是微软公司提供的服务器操作系统,适用于各种企业级应用和服务,如网站托管、数据库管理、应用程序部署等。Linux发行版:Linux是一种开源操作系统,有许多不同的发行版可供选择,包括但不限于以下几种常见的发行版:Ubuntu:一种基于De......
  • 如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
    大规模Windows环境下,采用Nginx反向代理服务后,操作系统会产生较多TIME_WAIT的TCP(TransmissionControlProtocol)连接,操作系统默认TIME_WAIT的TCP连接回收时间是4分钟,TCP默认动态端口范围为开始端口49152,结束端口65535。这样会使回收TCP过慢导致系统吞吐量下降,甚至出现502访问失败问......
  • 主动发现系统稳定性缺陷:混沌工程
    这是一篇较为详细的混沌工程调研报告,包含了背景,现状,京东混沌工程实践,希望帮助大家更好的了解到混沌工程技术,通过混沌工程实验,更好的为系统保驾护航。一、概述1.1研究背景Netflix公司最早系统化地提出了混沌工程的概念。2008年8月,Netflix公司由于数据库发生故障,导致了三天时......
  • 使用单例获取yml配置的接口List,来为过滤器设置白名单
    最近在涉及登录访问接口的问题,服务器被人给攻击了,考虑给接口加白名单,如果用注解的方式还要跑到接口上去加代码也不够灵活,那么如何使用过滤器来实现呢?让我们来用demo实现看看。第一步、首先新建一个demo项目jdk11新建一个springboot项目,配置pom.xml1<?xmlversion="1.0"e......
  • 脑机接口 | 面向步态&神经电生理研究的非人灵长类模型与系统
    近期,海南大学生物医学工程学院脑机芯片神经工程团队在FrontiersinNeuroscience期刊上发表了题为《面向步态&神经电生理研究的非人灵长类模型与系统》的学术论文。海南大学生物医学工程学院梁丰研副教授为第一作者,殷明教授为通讯作者。海南大学为第一作者单位和通讯单位。大脑皮......
  • Spring核心接口之InitializingBean
    一、InitializingBean接口说明InitializingBean接口为bean提供了属性初始化后的处理方法,它只包括afterPropertiesSet方法,凡是继承该接口的类,在bean的属性初始化后都会执行该方法。packageorg.springframework.beans.factory;/***Interfacetobeimplementedbybeanstha......