Unity游戏开发客户端面经——设计模式(初级)

VIPUnity游戏开发客户端面经——设计模式(初级)
Unity游戏开发客户端面经 之 设计模式 篇
开通可读全文 ·9.4k 人阅读
最低0.47元/天 解锁文章

前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习。由于文本太多,按类型分开。这一篇是 设计模式 常问问题总结,有帮助的可以收藏。


1. 面向对象设计原则:

    1. 单一职责原则

        一个类,最好只做一件事,只有一个引起它的变化。

    2. 开放封闭原则(开闭原则)

        对于扩展是开放的,对于更改是封闭的。

        为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。

    3. 里氏替换原则

        子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。

        里氏代换原则是实现开闭原则的重要方式之一,在运用里氏代换原则时,应该将父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法,运行时,子类实例替换父类实例,可以很方便的扩展系统的功能,无须修改原有子类的代码,增加新的功能可以通过增加一个新的子类来实现。

    4. 依赖倒置原则

        抽象不应该依赖于细节,细节应当依赖于抽象。换句话说,要针对接口编程,而不是针对实现编程。

    5. 接口隔离原则

        使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些他不需要的接口。

    6. 合成复用原则

        尽量使用对象组合,而不是继承来达到复用的目的。

    7. 迪米特法则

        一个软件实体应当尽可能少地与其他实体发生相互作用。

        详细请看:【腾讯游戏面试题】面向对象的设计原则是什么? - 哔哩哔哩本文首发公众号洪流学堂。洪流学堂,让你快人几步。今天分享一个腾讯游戏的面试题:题目请说出面向对象的设计原则,并分别简述它们的含义。参考答案单一职责原则一个类只负责一个功能领域中的相应职责。或者说,一个类,应该只有一个引起它变化的原因。开闭原则一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。在定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类。为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。里氏替换原则所有引用icon-default.png?t=N7T8https://www.bilibili.com/read/cv10623181/

2. 工厂模式: (GameManager,UIManager)

        定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。这满足创建型模式中所要求的“创建与使用相分离”的特点。

        使用场景:比如说写技能是一系列类,那么就可以使用工厂模式创建。

                          游戏场景转换;角色AI状态管理。

3. 观察者模式  (服务器与客户端之间的通信)

        观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。

        类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。

        多用于角色血条值下降被改变(防御力、攻击力等)

4. 发布-订阅者模式(服务器与客户端之间的通信)

        是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者存在。

        观察者模式 与 发布/订阅者模式 的区别区别:

        在观察者模式中,观察者是知道Subject的,Subject一直保持对观察者进行记录。然而,在发布订阅模式中,发布者和订阅者不知道对方的存在。它们只有通过消息代理进行通信。

        观察者和被观察者,是松耦合的关系。发布订阅模式里,发布者和订阅者,不是松耦合,而是完全解耦的。观察者模式大多数时候是同步的,比如当事件触发,Subject就会去调用观察者的方法。而发布-订阅模式大多数时候是异步的(使用消息队列)。

VIP 游戏开发中常用的设计模式 【game design patterns】 common design patterns for game 开通可读全文·5.2k 阅读·9 点赞·23 收藏 阅读全文

相关推荐

Unity游戏开发客户端性能优化基础

Unity游戏开发客户端面经 之 性能优化 篇

Sea3752的博客 1万+

Unity游戏开发客户端面经——算法(初级)

Unity游戏开发客户端面经之算法篇

Sea3752的博客 1万+

Unity游戏开发客户端面经——网络(初级)

Unity游戏开发客户端面经 之 网络 篇

Sea3752的博客 1万+

Unity游戏开发客户端面经——热更新(初级)

Unity游戏开发客户端面经 之 热更新 篇

Sea3752的博客 1万+

Unity游戏开发客户端面经——数据结构(初级)

Unity游戏开发客户端面经 之 数据结构篇

Sea3752的博客 1万+

Unity游戏开发客户端面经——操作系统(初级)

Unity游戏开发客户端面经 之 操作系统 篇

Sea3752的博客 6068

Unity游戏开发客户端面经——数学(初级)

Unity游戏开发客户端面经 之 数学 篇

Sea3752的博客 4858

Unity游戏开发客户端C#基础

初级Unity客户端开发工程师 面经 之 C#篇

Sea3752的博客 2万+

Unity游戏开发客户端Lua基础

Unity游戏开发客户端面经之 lua 篇

Sea3752的博客 1万+

Unity大型游戏开发全流程指南

【代码】Unity大型游戏开发全流程指南。

2401_82978699的博客 5155

【Unity程序】Unity游戏开发中常用的设计模式【一】

常用设计模式

秩沅 2052

保姆级教程:用Dify+DeepSeek API打造你的私人股票分析助手(附完整配置流程)

本文提供了一份详细的教程,指导用户如何利用Dify低代码平台和DeepSeek API构建一个私人股票分析助手。内容涵盖从环境准备、Dify部署、DeepSeek模型配置,到设计智能体工作流和编写高效提示词的完整流程,旨在帮助投资者和开发者快速打造专属的AI投资分析工具。

weixin_29079671的博客 631

CoppeiaSim(VREP)入门

vrep/CoppeliaSim关节抖动问题原因总结【Coppeliasim|轨迹规划(一)】设置机械臂的关节角时保证机械臂不散架设置机械臂的关节角时保证机械臂不散架。

weixin_50624597的博客 3221

用Python+NumPy手把手实现分数阶傅里叶变换(FRFT),搞定线性调频信号分析

本文详细介绍了如何使用Python和NumPy实现分数阶傅里叶变换(FRFT),特别针对线性调频信号(Chirp信号)分析。通过从零开始的代码实现和可视化案例,展示了FRFT在时变信号处理中的强大能力,帮助工程师和研究人员高效分析频率随时间变化的信号。

weixin_29062823的博客 213

手把手教你学Simulink--基于新能源与储能系统的场景实例:压缩空气储能(CAES)系统热力学建模

本文介绍了使用Simulink进行压缩空气储能(CAES)系统热力学建模的详细步骤。系统模型包含压缩机、储气装置、膨胀机、热交换器和控制器等核心模块,通过MATLAB函数计算各部件参数,并设置仿真条件。文章详细说明了从模型创建到性能评估的完整流程,包括压缩/膨胀过程的能量转换、温度压力变化等关键指标分析。该建模方法可验证设计方案的有效性,并为系统优化提供参考,适用于新能源与储能领域的研究与应用。

MHD0815的博客 9138

【推荐100个unity插件】制作美丽 Unity 景观,增强Terrain材质表现的插件——GTS

GTS地形着色器是一款专为Unity设计的强大工具,可解决地形纹理绘制和光照处理的难题。它提供一键式配置,支持实时调整地形效果,包含细节注入、高度混合、雪注入等核心功能,并兼容网格地形和低多边形模型。插件完美集成Gaia天气系统,支持HDRP细分效果。安装后通过GTS管理器创建配置文件并应用到地形,即可快速生成高质量地形渲染。其模块化设计包含全局设置、网格转换和细节调整等面板,使开发者能灵活控制地形表现,显著提升视觉效果与性能表现。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1555

opencode : 无法将“opencode“项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案

opencode命令识别问题与openclawcodexgemini确保的路径在 PATH 中。这个知识对所有 npm 全局工具通用。

一键难忘的博客 4489

SAP_MM模块库存概览俄罗斯报表简介

本文介绍了SAP MM模块中"库存概览俄罗斯报表"的功能与应用。该报表主要用于查看物料在不同库存地点和类型的库存情况,并满足俄罗斯当地法规要求。文章解释了"俄罗斯报表"可能指代本地化合规库存报表或客户自定义报表,详细说明了事务代码J3RFLVMOBVEDH的操作步骤,包括公司代码、物料编码、日期范围等查询条件,并解释了报表中各字段含义如期初期末库存数量与价值。最后强调在物料分类账处理完成后使用该报表可获得实际库存价值,为SAP用户提供了实用的库存管理参考。

我小时候很黑的博客 1070

LVGL hal disp(porting display)

LVGL本身是没有对接最终的显示框架的,所以到具体的某个平台上,需要自行porting。

Bigan(安)的博客 2094

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Unity游戏开发客户端面经——算法(初级)
下一篇: Unity游戏开发客户端Unity基础

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
Game_小志
博客等级 码龄6年 4565粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值