设计模式 模式 基础 信息

C++ 设计模式之工厂方法模式

设计模式之工厂方法模式 工厂方法模式,定义一个用于创建对象的接口,让子类决定实力化哪一个类。工厂方法使一个类的实例化延迟到其子类。其UML图如下: 这里要区分一下工厂方法模式与简单工厂模式的区别。简单工厂模式需要在工厂类中判断要生产什么类型的对象。工厂方法模式则把这部分工作交给了客户端。每一种类对象 ......
模式 设计模式 工厂 方法

代理模式-14

### 概述 代理模式 (Proxy/Surrogate Pattern) 给某个对象一个代理,由代理控制对原对象的使用。 **优点**:一定程度降低耦合度。 **缺点**:实现复杂。 ```java interface Subject { void a(); } class Real implem ......
模式 14

Untiy Shader学习基础(build in管线)

1.渲染流水线 流水线的任务是从3D模型出发,绘制出一个2D的屏幕场景。 渲染流水线一共分为三个阶段:1.应用阶段,主要作用是准备好场景数据,执行Culling操作,设置每个模型的渲染状态,输出渲染图元给下一个阶段 2.几何阶段,决定绘制的图元是什么,要怎么样绘制。并将数据变换到屏幕上,将数据与着色 ......
管线 基础 Shader Untiy build

C++ 设计模式之策略模式

设计模式之策略模式 策略模式定义算法家族,分别封装。它们之间可以相互替换,让算法变化,不会影响到用户。优点:适合类中的成员方法为主,算法经常变动;简单了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试)。缺点:客户端需要做出判断。 其UML图如下: 策略模式和简单工厂模式非常相似。具体 ......
模式 设计模式 策略

C++ 设计模式之装饰模式

设计模式之装饰模式 装饰模式,动态地给一个对象添加一些额外的职责(不一定重要的功能,只是偶然一次执行),就增加功能来说,装饰模式比生成子类更为灵活。其UML图如下: ConcreteComponent定义了一个具体的对象,ConcreteDecorator类是用来装饰ConcreteComponen ......
模式 设计模式

C++ 设计模式之状态模式

设计模式之状态模式 状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了类本身。状态模式主要解决的时当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。其UML图如下: 在以上UML图中,Conte ......
模式 设计模式 状态

C++ 设计模式之适配器模式

设计模式之适配器模式 适配器模式,将一个类的借口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要解决的是数据和行为都正确,但接口不符合的情况。该模式很好理解,其UML图如下: 示例代码如下: 1 // AdapterModel. ......
模式 设计模式 适配器

AI推理实践丨多路极致性能目标检测最佳实践设计解密

摘要:基于CANN的多路极致性能目标检测最佳实践设计解密。 本文分享自华为云社区《基于CANN的AI推理最佳实践丨多路极致性能目标检测应用设计解密》,作者: 昇腾CANN 。 当前人工智能领域,最热门的无疑是以ChatGPT为代表的各种“新贵”大模型,它们高高在上,让你无法触及。但在人们的日常生活中 ......
极致 性能 目标

C++ 设计模式之迭代器模式

设计模式之迭代器模式 迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而不暴露该对象的内部表示。该模式很好理解,C++中的迭代器应该都用过,和那个差不多。其UML图如下: ConcreteIterator内部有一个聚合对象的引用(指针),而ConcreteAggregate依赖于Concre ......
模式 设计模式

C++ 设计模式之访问者模式

设计模式之访问者模式 访问者模式,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间耦合解脱开,使得操作几何可以相对自由地演化。访问者模式的目的使要把处理从数据结构中分 ......
模式 设计模式 访问者

C++ 设计模式之备忘录模式

设计模式之备忘录模式 备忘录,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。该模式很好理解,其UML图如下: 在Originator中提供了创建Memento的接口,具体要保存什么样的内容,则根据需求来定。而Caretaker则 ......
模式 设计模式 备忘录

C++ 设计模式之中介者模式

设计模式之中介者模式 中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式很好理解,其UML图如下: Mediator中每个交互者的引用,在Mediator内部封装了各种类之间的交互。至于那个类和那个类交合则 ......
中介者 模式 设计模式 中介

C++ 设计模式之享元模式

设计模式之享元模式 享元模式,运用共享技术有效地支持大量细粒度的对象。面向对象技术可以很好地解决一些灵活性或扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正式为了解决这依赖问题而诞生的。享元模式通过共享技术实现相同或相似对 ......
模式 设计模式

C++ 设计模式之解释器模式

设计模式之解释器模式 解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式解决的问题是,如果一种特定类型的问题发生的频率足够高,那么可能就只得将该问题的各个示例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些 ......
模式 解释器 设计模式

C++ 设计模式之责任链模式

设计模式之责任链模式 责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。该模式很好理解,其UML图如下: 每个ConcreteHandler都有一定的请求处理能力,当自己处理不了的时候就把请求转 ......
模式 设计模式 责任

C++ 设计模式之命令模式

设计模式之命令模式 命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。其UML类图如下: 该模式主要是为了隔离请求和实际执行者之间解除。就是解耦和,所有的请求统一有一个类负责,而该类负责管理这些请求(添加请求、撤销请求之类的) ......
模式 设计模式 命令

net core基础知识(一)

特性 跨平台 Web API和MVC技术的统一 原生依赖的注入支持 更强的测试性 轻量、高性能的模块 开源、有社区的支持 项目入口--Main Asp.Net Core应用程序最初作为控制台应用程序启动,而Program.cs文件中的Main()方法就是入口 CreateHostBuilder()方 ......
基础知识 基础 知识 core net

简单猜数字游戏设计

下面是游戏设计要求: 游戏随机选择一个 100 以内的自然数, 然后让玩家猜出这个数字。每轮告诉玩家他猜数字高了还是低了,直到猜出数字为止。 代码实现通过上述游戏要求,我们来探索如何将上述要求转换为代码。 初始设置包含一个游戏标题,一个用于输入内容输入框,一个提交按钮,以及一个提示游戏的游戏说明 < ......
数字

C++ 设计模式之桥接模式

设计模式之桥接模式 桥接模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里说的实现分离,并不是说然抽象类与派生类分离,这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。其UML图如下: 结合上图理解一下其定义。抽象部分指的是Abstraction或者RefinedAbst ......
模式 设计模式

C++ 设计模式之单例模式

设计模式之单例模式 保证一个类仅有一个实例,并提供一个访问他的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且可以提供一个访问该实例的接口。其UML图如下: 其示例代码 ......
模式 设计模式

C++学生健康信息收集系统[2023-07-06]

# C++学生健康信息收集系统[2023-07-06] 学生健康信息收集系统简介 一、 问题描述 为了应对新型冠状病毒疫情,学校需要开发一个能够每天收集全校学生健康信息的系统,便于学校管理。不同学院以及学校的管理员,需要能方便地查看和导出健康状况异常的学生列表,并能对各类信息进行查看和统计。 二、 ......
学生 系统 信息 2023 07

C++ 设计模式之组合模式

设计模式之组合模式 组合模式,将对象组合成属性结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。其UML图如下: 一个组织有很多子组织,而无论子组织是单独一个部门或是一个分组织。该组织都希望把它们当成一样的子组织来管理。举个例子吧,就拿公司来说吧,一个公司总部 ......
模式 设计模式

C++ 设计模式之简单工厂模式

设计模式之简单工厂模式(C++) 简单工厂模式,主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。优点:适用于不同情况创建不同的类时。缺点:客户端必须要知道基类和工厂类,耦合性差。需要根据不同的需 ......
模式 设计模式 工厂

C/C++数据结构与算法课程设计[2023-07-06]

# C/C++数据结构与算法课程设计[2023-07-06] 数据结构与算法课程设计 一、课程设计的目的、要求和任务 本课程设计是为了配合《数据结构与算法》课程的开设,通过设计完整的程序,使学生 掌握数据结构的应用、算法的编写等基本方法。 1.课程的目的 (1)使学生进一步理解和掌握课堂上所学各种基 ......
数据结构 算法 结构 课程 数据

C/C++课程设计题[2023-07-06]

# C/C++课程设计题[2023-07-06] 要求 1、独立完成。可以选一类题目,即自拟题目。也可以选二类题目,按照学号尾号对应做相应题目。 2、提交电子版作业:每人一个文件夹命名为:学号+姓名。文件夹内课程设计报告一份,源代码一份。十九周周五前交给学委。 3、成绩自评级填写到报告首页。成绩自评 ......
课程 2023 07 06

C/C++学分信息管理[2023-07-07]

# C/C++学分信息管理[2023-07-07] 4、学分信息管理 【任务描述】 学校规定,每位学生毕业的基本条件是:必须修满基础类课程20分,专业基础类课程30分,专业选修类课程25分,实践类课程25分。 设计学分信息管理系统,判断学生是否达到毕业要求。 【功能要求】 学生信息包括:学号,姓名, ......
学分 信息 2023 07

第一节 Java基础语法

# 注意: ​ 用记事本打开本文档,格式较差。 ​ 可安装typora软件后再次打开。 ​ 安装包位于:day01\资料\其他软件\阅读笔记的软件\typora-setup-x64.exe # day01 - Java基础语法 ## 1. 人机交互 ### 1.1 什么是cmd? 就是在window ......
语法 基础 Java

代码的坏味道 《重构改善既有代码的设计》

1. Duplicated Code重复代码,在程序中多次出现的相同结构或功能的代码 同一个类中的两个函数含有相同的表达式 两个互为兄弟的子类中含相同的表达式 相互独立的类中出现相同表达式 2. Long Method 过长的函数难以理解及维护 段函数或间接层具有很强的解释能力、共享能力和选择能力 ......
代码 味道

蓝牙Mesh协议是一种专为广域物联网(IoT)应用设计的蓝牙通信协议。它允许多个设备之间建立一个自组织的网络,形成一个能够覆盖较大范围的通信网络。

蓝牙Mesh协议是一种专为广域物联网(IoT)应用设计的蓝牙通信协议。它允许多个设备之间建立一个自组织的网络,形成一个能够覆盖较大范围的通信网络。 蓝牙Mesh网络采用了网状拓扑结构,其中每个设备都可以与其他设备直接通信,从而实现设备之间的互连。这种网状结构有助于提供更广阔的覆盖范围,并且支持多跳传 ......
网络 通信网络 专为 多个 范围

Shell基础学习

### Shell基础 >Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 > >Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 > >Shell 脚本 > >Shel ......
基础 Shell