Unity设计模式——外观模式

news2024/10/7 20:35:35

 子系统的几个类:

class SubSystemOne
{
    public void MethodOne()
    {
        Debug.Log("方法一");
    }
}
class SubSystemTwo
{
    public void MethodTwo()
    {
        Debug.Log("方法2");
    }
}
class SubSystemThrre
{
    public void MethodThree()
    {
        Debug.Log("方法三");
    }
}

外观类:将子系统通过方法组整合

class Facade 
{
    SubSystemOne one;
    SubSystemTwo two;
    SubSystemThrre three;

    public Facade()
    {
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThrre();
    }
    public void MethodA()
    {
        Debug.Log("方法组1");
        one.MethodOne();
        two.MethodTwo();
    }
    public void MethodB()
    {
        Debug.Log("方法组2");
        two.MethodTwo();
        three.MethodThree();
    }
}

客户端类:根据功能需求不同,调用不同的外观类方法组

private void Start()
    {
        Facade facade = new Facade();
        facade.MethodA();
        facade.MethodB();
    }

        首先,在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层业务逻辑层、业务逻辑层表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。

        其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,也给外部调用它们的用户程序带来了使用上的困难,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖

        第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但因为它包含非常重要的功能,新的需求开发必须要依赖于它。此时用外观模式Facade也是非常合适的。你可以为新系统开发一个外观Facade类来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1076017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业视频直播画面时移看点的用法

企业视频直播画面时移时移功能,可以让客户在观看直播的时,实时回看直播内容;看点功能,可以将视频内容分段标记,能让客户明确内容结构,快速定位目标信息,提升观看体验,跟我一起来体验…

cad由于找不到mfc140u.dll怎么回事?mfc140u.dll丢失的解决方法

当你在使用 CAD(计算机辅助设计)软件时,如果出现“找不到 mfc140u.dll”的错误提示,这通常意味着你的计算机上缺少这个重要的动态链接库文件。Mfc140u.dll 是 Microsoft Foundation Class(MFC)库的一部分&a…

[CISCN2019 总决赛 Day2 Web1]Easyweb 盲注 \\0绕过 文件上传文件名木马

首先开局登入 我们开始目录扫描 扫除 robots.txt 现在只有三个文件 最后发现 只有 image.php.bak存在 这里主要的地方是 \\0 因为第一个\会被转义 这里就会变为 \0 表示空白 那我们sql语句就会变为了 select * from images where id\0 但是这里我们不可以使用 \\ 因为…

数据结构题型16-线索二叉树

文章目录 1 参考博客:2 线索二叉树的节点结构3、分析他人博客 1 参考博客: 1、【图解】数据结构代码领背-中序建立线索二叉树 2、【数据结构】中序线索二叉树的实现(源代码以及讲解) 2 线索二叉树的节点结构 3、分析他人博客 具体博客地址请参考&…

使用docker搭建kafka集群、可视化操作台

单机搭建 1 拉取zookeeper镜像 docker pull wurstmeister/zookeeper 2 启动zookeeper容器 docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper 3 拉取kafka镜像 docker pull wurstmeister/kafka 4 启动kafka镜像 docker…

【配置vscode编写c或c++程序,并在外部控制台输出程序和解决中文乱码问题!!!】

配置vscode编写c或c程序,并在外部控制台输出程序和解决中文乱码问题!!! 1、点击扩展,添加C语言所需的插件(点击安装,安装完成后点击设置标志安装另一个版本,注意一定要安装1.8.4版本…

赋能智能制造产业发展,开源网安入选广东省智能制造生态合作伙伴

​为贯彻《“十四五”智能制造发展规划》,加快构建广东省智能制造发展生态,广东省工业和信息化厅组织开展了第三批广东省智能制造生态合作伙伴筛选工作。经专家评审和公示,开源网安成功入选第三批广东省智能制造生态合作伙伴。 一直以来&…

期权开户流程合集——期权开户的操作步骤

最详细的期权开户流程介绍是怎样的,下文为大家介绍期权开户流程合集——期权开户的操作步骤的知识点,希望对读者有所帮助,期权开户流程和方式分两种,一种券商,一种期权分仓平台,有啥区别下文揭秘。本文来自…

亚马逊流量攻略:如何将流量转化为销售,测评实现销售飙升!

在电商领域,流量获取一直是一个核心议题。对于任何希望增加订单量的商家而言,将流量引导至自身店铺并成功转化为销售至关重要。对于初入电商领域或规模较小的卖家来说,亚马逊内部的流量获取通常可带来显著的销售业绩。那么,如何利…

从零学算法(LCR 180)

文件组合.待传输文件被切分成多个部分,按照原排列顺序,每部分文件编号均为一个 正整数(至少含有两个文件)。传输要求为:连续文件编号总和为接收方指定数字 target 的所有文件。请返回所有符合该要求的文件传输组合列表…

基于数学模型水动力模拟、水质建模、复杂河网构建技术在环境影响评价、排污口论证及防洪评价中的实践技术应用

目录 专题一 一维水动力模型在河流水动力模拟中的应用 专题二 一维复杂河网模型构建及建筑物设置 专题三 一维水质模型在入河排污口和环境影响评价中的应用 专题四 平面二维水动力模型的构建和验证 专题五 平面二维水动力模型在防洪影响评价中的应用 专题六 平面二维水动…

进阶JAVA篇-深入了解内部类

目录 一.内部类概述: 二.内部类可以分为四种: 2.1成员内部类 2.1.1如何编写一个成员内部类呢? 2.1.2该如何创建内部类的对象? 2.1.3在内部类中该如何访问外部类中的成员呢? 2.2静态内部类 2.2.1如何来创建静…

react管理系统layOut简单搭建

一、新建立react文件夹,生成项目 npx create-react-app my-app cd my-app npm start 二、安装react-router-dom npm install react-router-dom 三、安装Ant Design of React(UI框架库,可根据需求进行安装) npm install antd …

Idea JavaWeb项目,继承自HttpFilter的过滤器,启动Tomcat时部署工件出错

JDK版本:1.8 Tomcat版本:8.5 10-Oct-2023 13:55:17.586 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate conta…

onnx转换TensorRT的步骤

A. 解析onnx 已有的trt不适配,需要将onnx转为trt parse onnxserialize trt保存trt文件 注意:如果不使用Int8模式,onnx的parser代码几乎通用 概览 构建阶段 建立logger(日志)建立builder(网络元数据)创…

SpringBoot 如何使用 Sleuth 进行分布式跟踪

使用Spring Boot Sleuth进行分布式跟踪 在现代分布式应用程序中,跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案,它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使…

【Python深度学习】目标检测和语义分割的区别

在计算机视觉领域,语义分割和目标检测是两个关键的任务,它们都是对图像和视频进行分析,但它们之间存在着明显的区别。本文将通过图像示例,详细阐述语义分割和目标检测之间的差异。 一、基本概念 1.1 语义分割(Semantic…

Git【入门】从安装到会用(千字总结)

Git使用 一、Git介绍 1.1 版本控制(理解) 无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况 但我们不能只保留最后一次修改的文件,其余版本也要保留,有可能老板想要的就是你的上一个版本的 1.2 开发中存在的…

基于YOLOv5、YOLOv8的火灾检测(超实用毕业设计项目)

yolo系列文章目录 摘要:基于YOLOV5模型的火灾检测系统用于日常生活中检测与定位火灾目标,包括建筑火灾、森林火灾等。利用深度学习算法可实现图片、视频、摄像头等方式的火灾目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导…

云安全之信息内容安全

内容安全产生背景 随着互联网、智能设备及各种新生业务的飞速发展,互联网上的数据呈现爆炸式增长,图片、视频、发文、聊天等互动内容已经成为人们表达感情、记录事件和日常工作不可或缺的部分。每天,通过互联网上传的视频、图片数量超过10亿…