查看: 1306|回复: 0

Unity游戏开发——设计模式概述

[复制链接]
发表于 2022-11-15 10:09:56 | 显示全部楼层 |阅读模式
0.前言

这一系列的文章其实应该算作几本书和一些资料总结的笔记,是有关设计模式与游戏开发之间的应用。笔者将阅读学习过程中的思考和总结记录下来,也希望能提供给同样在这方面有疑问的朋友一些帮助。
1.设计模式是什么

首先我们要知道,设计模式是按照了“面向对象设计的原则”,强调了以类、对象、继承、组合作为软件设计分析的方式,提出了同类问题的解决方案,并主要满足了以下几点要求

    解决一再出现的问题

    提出解决一般化问题的方案

    使解决方案可以重复使用

简而言之,设计模式重点在于“模式”二字,它如同开加盟店时,提供了一套可重复使用的策略,从选址、装修、供货渠道等,并且可以快速扩张。

同理当软件开发者遇到相同问题时,不必再思考如分析和设计,可以从设计模式中直接找到对应的解决方法直接使用。这样一来,既缩短了开发时间,又加强了软件的稳定性和维护性。
2.游戏开发与设计模式

在游戏开发中,我们会面临很多问题,如下

    需要一个极其稳定的框架来承载千万级用户

    不断增加的游戏系统

    对现有游戏功能的修改

    敏捷开发

这时,我们便需要用到设计模式,因为他是先人的智慧、是已经被验证过的模式、不必思考新的解决方案。

设计模式已经成为了软件设计领域的共同语音,所以他还可以给我们减少人与人之间沟通的误解,可以直接指明该游戏系统是用了什么设计模式,对于小型的游戏团队,更是提升了系统的稳定性和扩展性。
3.七大设计原则

单一职责原则

这个原则强调的是“当设计封装一个类时,该类应该只负责一件事”

说起来好像很简单,实际上对功能的划分通常也是开发者最头疼的一件事。

解决方案就是对类进行不断的重构,将部分功能抽成新的类,再利用组合的方式将新的类加入到原来的类中,慢慢的就会变成一个类只负责单一功能的实现。

开闭原则

这个原则强调的是“一个类应该对扩展开放,对修改关闭”

具体来说,对于已经完成测试或者上线运营的功能,我们不应该再修改这个类的任何接口或者实现内容,但是应该对功能的增加保持开放。

为了满足这个原则的要求,我们需要将“方法”上升到接口,将“实现”下放到子类中,这样当新增一个需求时,我们重新实现一个子类继承自接口或者旧的子类,然后在新的子类中新增功能,这样就保证了旧的功能没有发生变化(对修改关闭),同时新增了功能(对扩展开放)。

里氏替换原则

这里强调的是“子类必须能够替换父类”

关于这个概念,一般书中介绍的都比较抽象,也曾将困扰了许多人。笔者在此结合多方资料,说一下自己的理解。

首先里氏替换原则是继承复用的基础,反映了父类与子类之间的关系。

通俗的讲有父类的地方,全部替换成子类,不影响程序的运行,这样就满足里氏替换原则。

那什么样的子类在替换父类时,不会影响程序运行呢?

这种子类可以扩展父类的功能,但不能修改父类的原有功能。这也是对单一职责原则的补充——对扩展开放,对修改关闭。

如果违背了里氏替换原则,会让程序出错的概率大大提升

举个栗子
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表