了解设计模式

news2024/10/6 14:28:44

https://github.com/WittyKyrie/UnityUtil/blob/main/%E5%B8%B8%E7%94%A8%E5%B7%A5%E5%85%B7/Object

代码仓库↑

【游戏开发设计模式】单例模式,要提防的设计模式!!_哔哩哔哩_bilibili

参考↑ 

组合模式:

继承会造成代码复用量多,且子类扩展困难的情况

 通过不同的组件相互结合来实现不同的类

尽量避免在Update中使用GetComponent,否则性能代价过于昂贵

单例模式:

保证一个类只有一个实例,且具有全局访问点

对于那些需要记录到文件每一个修改状态的系统而言,只有一个实例是非常重要的特性

 用静态来实现全局访问功能

 单例模式的有点:单例模式只会在第一次请求时被创建,不会自主创建,内存的节约(不一定,有懒汉和饿汉模式

只存在一个对象进行作用,不用经历对象创建和销毁,节省性能

可以让你非常轻松的链接游戏各个模块,例如你的任何类都可以轻松调用文件系统

单例模式的缺点:

随着项目的增大,耦合度增大,维护困难

单例模式可能会让扩展变得困难

命令模式:

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作

 观察者模式:

对象池模式:

预先定义一个包含可重用对象的池子,在初始化池子的时候就创建好对象并设置为非激活模式,

当需要创建物体时,将物体设置为激活模式,当需要销毁物体时设置为非激活模式

 与传统的创建销毁模式相比,在cpu和内存消耗上会有极大的性能提升

对象池模式会直接分配一个完整的大的内存,而不会像不断创建销毁一样生成很多的内存碎片造成性能的浪费

工厂模式:

工厂模式是一种创建型设计模式,用于创建对象,将对象的创建过程封装在一个类中

 工厂模式可以通过将客户端代码与实际创建对象的过程分离来提高代码的可维护性,可扩展性和可读性

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

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

相关文章

Django框架的源码解析

简述从django-admin startproject [name]开始 小结 django.core.management init.py 1. 5个方法2. ManagementUtility 类 小结 base.py 1. 2个方法:2. CommandError(Exception):3. SystemCheckError(CommandError):4. CommandParser(ArgumentParser):5. DjangoHelpF…

【Gator Cloud】架构篇 - 提供基于云原生的数据安全保护

随着云计算的成熟和云计算系统的广泛使用,越来越多的企业选择将新业务部署到云上。但是,上云并不意味着就能够充分利用云平台的优势。目前,大部分的云化应用,依然还是基于传统的软件架构来搭建的,仅仅是移植到云上去运…

【python脚本系列】python脚本2——PDF转word文档

只需2行代码,轻松将PDF转换成Word 机器学习算法那些事 2023-05-05 18:58 发表于广东 编辑:数据分析与统计学之美 可将 PDF 转换成 docx 文件的 Python 库。该项目通过 PyMuPDF 库提取 PDF 文件中的数据,然后采用 python-docx 库解析内容的布局…

【面试题】关于JavaScript实现继承的六大方案,你都了解过吗?

​ 大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 面试官:“你说说 JavaScript 中实现继承有哪几种方法?” …

相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

题目 解析 题目要求 如果相交 就返回交点如果不相交 就返回NULL 思路 1.通过题目的描述我们可以知道,两个单链表相交只有一种形式 并不存在下面的的形式 我们已经明确了单链表相交的形式, 那我们要如何判断两个单链表相交呢 这里给出一种做法&…

Mysql安装5分钟解决

文章目录 1.下载安装包:2.MySQL的初始配置3.安装mysql的服务:4.初始化MySQL命令:5.开启mysql服务命令:6.登录验证:7.修改密码: 1.下载安装包: 直接通过这里安装MYSQL5.7下载链接 或者进入MySQL…

干翻Mybatis源码系列之第七篇:Mybatis提供的集成缓存方案

第一章:Mybatis Orm的缓存 Mybatis定义了一个对象缓存,是Mybatis对缓存的封装,为了屏蔽实现的差异,这被定义成了一个接口Interface,这样的话,Mybatis的缓存基本上是存储于JVM内存中的。 一:Ca…

信息技术服务知识笔记

一、运维 1、基础环境运维服务 对保证信息系统正常运行所必需的电力、空调、消防、安防等基础环境的运维。包括:机房电力、消防、安防等系统的理性检查及状态监控、相应支持、故障处理、性能优化等服务 2、硬件运维服务 对硬件设备(网络、主机、存储…

6.2.1mnist _eval

之前在调试6.2.1mnist _eval代码的时候,出现了下面的错误 //下面不阐述本人遇到的错误,直接告诉大家解决办法(以老师给的源代码进行演示) 首先,打开第6章的源代码 //点击程序与数据拆分的文件夹, 并将三个…

3、Flutter项目搭建

一、搭建项目 1.1 搭建空壳项目 接上篇的项目搭建、本篇将继续搭建各个界面.当BottomNavigationBar搭建起来后,在各个界面,没有显示对应的元素,因此我们在包含它的Scaffold中,添加body,这样让每个界面撑起来.每次点击就切换对应的界面. 那么我们创建一个_RootPageState中的私…

【Python】scikit-plot可视化模型(含源代码)

文章目录 一、前言二、功能1:评估指标可视化2.1 scikitplot.metrics.plot_confusion_matrix2.2 scikitplot.metrics.plot_roc2.3 scikitplot.metrics.plot_ks_statistic2.4 scikitplot.metrics.plot_precision_recall2.5 scikitplot.metrics.plot_silhouette2.6 sci…

操作系统学习01

1、什么是操作系统? 通过以下四点可以概括操作系统到底是什么: 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 &a…

微前端 qiankun@2.10.5 源码分析(一)

微前端 qiankun2.10.5 源码分析(一) 前言 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 Techniques, strategies and recipes for building a modern web app with multiple teams that can ship feat…

Figma转换为sketch,分享这3款工具

在我们的设计工作中,我们经常会遇到各种各样的设计文件相互转换的问题。 你经常为此头疼吗?当你遇到Figma转换Sketch文件的问题时,你是如何解决的?Figma转换Sketch文件有工具吗? 根据众多设计师的经验,本…

在竞争激烈的移动应用市场中获得成功,掌握决胜Framework技术

为何要学习framework? Framework,指的是对应用程序开发所需的核心工具和组件的封装和提供。在Android开发中,Framework是整个开发过程中的核心组成部分,提供了许多功能和服务,包括UI组件、数据存储、网络通信、多媒体…

第二十四章 策略模式

文章目录 前言传统方式解决鸭子问题完整代码抽象鸭子类野鸭子类北京鸭子类玩具鸭子类 一、策略模式基本介绍二、策略模式解决鸭子问题完整代码飞翔接口 FlyBehavior飞翔接口的子类实现飞翔技术高超 GoodFlyBehavior不会飞翔 NoFlyBehavior飞翔技术一般 BadFlyBehavior其他行为接…

文献阅读 Meta-SR: A Magnification-Arbitrary Network for Super-Resolution

题目 Meta-SR: A Magnification-Arbitrary Network for Super-Resolution Meta-SR: 用于超分辨率的任何放大网络 摘要 由于DCNN的发展,最近关于超分辨率的研究取得了巨大成功。然而,任意比例因子的超分辨率长期以来一直被忽视。以往的研究者大多将不同…

Stable-Diffusion AI画画本地搭建详细步骤

ChatGPT出来后,第一次感觉到人工智能真的可能要来了,因此也顺便尝试了下开源AI画画的搭建。网络上写的教程总是不那么面面俱到,因此本文参考了3篇文章才成功把Stable-Diffusion 本地搭建搭建了起来。参考教程在文末。 本文是本地搭建AI画画&a…

C/C++内存泄露检查利器—valgrind

1、Valgrind概述 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。 Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟…

Android中的GPS开发

GPS简介 Gobal Positioning System,全球定位系统,是美国在20世纪70年代研制的一种以人造地球卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间信息;它是具有…