MVC和ECS两种设计架构的初浅理解


MVC模式

MVC由Model、View、Controller三部分组成,分别负责数据的存储、视图界面的显示、业务逻辑的处理。我理解分为下面几个部分:
  1. 用户在View层下达指令,View层把指令传给Controller层,或者是Controller层监听了View层,只要View层被下达指令,Controller层立刻处理与该指令有关的业务逻辑。在Controller层处理Model层的业务逻辑数据,Model层可以理解为数据和状态的存储;然后Controller层同时给View层传达数据结果的表现,驱动刷新View层的表现。

  2. 当服务端发送数据给客户端的时候,可以分出一个Service层,然后是View层把Service层发过来的数据存储起来,Controller层可把Model层的数据表现传给View层表现,但是有些可以是Model层存储的数据直接给View层去读取。像比较简单的数据显示,没有太多业务逻辑的,也不是很必要通过Controller层去驱动刷新。

在这里插入图片描述

MVC结构图
优点:比较好的降低代码的耦合度,可以达到界面、数据、逻辑分离的效果,三个模块分别负责表现、存储、逻辑,各司其职,哪个模块出问题只需要去修改那一个模块,如果表现要多样化,只需改View层就可以了,同理,存储和逻辑需要改变就分别去找Model模块和Controller模块,这样就易于代码的维护和拓展。
缺点:如果是应用于比较小的项目或者功能上,就会显得过于复杂,比如点击一个按钮切换图片,这样实质上一个View层就可以了,逻辑和数据都可以写里面,要是分开写还降低开发效率。还有就是也不能做到给数据层和视图层完全的解耦。

ECS模式

ECS由Entity、Component、System三部分组成,分别是实体、组件、系统。
  1. 基于组合优于继承的思想,我把实体理解为一个游戏物体,组件理解为数据,把众多组件挂在或者说组合在游戏物体上就是把数据给游戏物体,然后系统就像个CPU去处理各个物体的数据,从而引发一些行为。
  2. 一个游戏物体有了这些组件有了数据就可以有一些状态,比如给了一个游戏物体弹性的组件,游戏物体就可以有弹跳这个状态,但是弹起来这个行为是由系统去控制的,系统负责处理游戏物体的行为,但是系统本身没有状态。如果要把游戏物体上弹跳这个状态去掉,系统去控制把游戏物体上的弹性组件去掉了就可以了。这样看起来似乎能很方便的管理游戏物体,游戏是由各个游戏物体组成,这样从而达到很好控制游戏。
    在这里插入图片描述
ECS结构图(此图源于网络)
优点:组合优于继承的思想,能很好的降低代码的耦合度,可以将数据更有效的组织,提高CPU cache利用率,从而节省性能的开支,ECS自己有一套多线程调度系统,易于做多线程并行。
缺点:不能很好地用来开发UI交互

总结:我感觉这两种架构方式并不冲突,可以视情况并同使用。MVC比较适用于UI交互的设计,ECS比较适用于处理游戏物体之间的业务逻辑关系。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVC是Model-View-Controller的缩写,是一种常见的软件架构模式,主要用于构建用户界面和Web应用程序。在MVC架构中,模型(Model)处理应用程序的数据和逻辑,视图(View)负责显示数据和用户界面,控制器(Controller)协调模型和视图之间的交互。 以下是MVC架构设计和实现步骤: 1. 设计模型(Model):模型主要负责处理应用程序的数据和逻辑,包括从数据库中读取数据,对数据进行处理和存储等。在设计模型时,需要考虑到应用程序的数据结构和业务逻辑,设计合理的数据模型,以便于后续的数据操作和管理。 2. 设计视图(View):视图主要负责显示数据和用户界面,包括系统的用户界面和交互界面。在设计视图时,需要考虑到用户的使用习惯和界面设计规范,设计合理的用户界面和交互界面,以便用户更好地使用应用程序。 3. 设计控制器(Controller):控制器负责协调模型和视图之间的交互,响应用户的请求并进行相应的处理。在设计控制器时,需要考虑到应用程序的业务逻辑和用户交互流程,设计合理的控制器,以便于实现模型和视图之间的交互。 4. 实现MVC架构:在实现MVC架构时,需要将应用程序的功能分为模型、视图和控制器三个部分,每个部分都有自己的职责和功能。模型主要负责数据处理和逻辑,视图主要负责用户界面和交互界面,控制器主要负责协调模型和视图之间的交互,并响应用户的请求。在实现时,需要考虑到各个部分之间的协作和交互,确保整个应用程序的功能正常运行。 以上是MVC架构设计和实现步骤,实现MVC架构可以提高应用程序的可维护性和可拓展性,同时也可以提高应用程序的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值