当前位置: 首页 > news >正文

宁波网站建设建站怎么做石嘴山网站关于两学一做

宁波网站建设建站怎么做,石嘴山网站关于两学一做,天猫网站平面广告,wordpress主题黑糖引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 在游戏开发中,代码的组织和结构对于项目的可…

引言

大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

在游戏开发中,代码的组织和结构对于项目的可维护性和可扩展性至关重要。一个常见的设计模式,工厂方法模式,可以帮助我们更好地管理游戏对象的创建。本文将介绍工厂方法模式,并通过一个示例来展示如何使用它来改善代码质量。
本文源码和源工程在文末获取,小伙伴们自行前往。

1.工厂方法模式的相关概念

  • 工厂方法模式:一种创建型设计模式,它提供了一种将对象的创建过程封装在子类中的方式,以便在不改变父类代码的情况下创建多个具体类型的对象。该模式将对象的实例化延迟到子类中,从而使得客户端代码不必关心要创建的具体对象类型,只需要通过调用工厂方法来获取对象即可。
  • 开闭原则:面向对象编程中的一个重要设计原则,它由著名的计算机科学家伯特兰·梅耶(Bertrand Meyer)提出,并被引入到软件工程的设计中。开闭原则的核心思想是:对扩展开放和对修改关闭。
  • 对扩展开放(Open for Extension):这意味着在不修改已有代码的情况下,应该能够扩展系统的功能。新功能应该通过添加新的代码来实现,而不是通过修改已有代码。
  • 对修改关闭(Closed for Modification):这表示一旦一个软件实体被创建并投入使用,就不应该再修改它的源代码。任何变化都应该通过扩展而不是修改现有代码来实现。

2.不使用工厂方法模式的糟糕代码

假设我们正在开发一个2D游戏,其中有多种不同类型的敌人需要创建。在没有工厂模式的情况下,我们可能会创建一个函数来手动实例化这些敌人,如下所示:

测试代码如下:

测试结果:

如果我们新增加一个外星人敌人,我们需要在构造函数里面添加对应的代码,以及初始化外星人敌人的相关操作:

新增测试代码:

测试结果如下:

这段代码存在一些问题:

  1. 代码臃肿:随着敌人类型的增多,构造函数会变得越来越复杂,难以维护。
  2. 违反开闭原则:每次添加新的敌人类型都需要修改构造函数,违反了开闭原则(对扩展开放,对修改关闭)。
  3. 可读性差:代码不易阅读和理解,因为创建不同类型的敌人的逻辑混在一起。

3.使用工厂方法模式改善代码

现在,让我们使用工厂方法模式来改善这段代码。工厂方法模式将对象的创建移到单独的工厂类中,每个具体的对象类型都有自己的工厂。以下是使用工厂方法模式的改进代码:

测试代码如下:

测试结果如下:

如果我们新增加一个外星人敌人,我们仅仅需要创建一个具体的外星人敌人类和具体的外星人敌人工厂:

新增测试代码:

测试结果如下:

通过使用工厂方法模式,我们改进了代码的质量:

  1. 代码更清晰:创建对象的逻辑被移到了工厂类中,使代码更加清晰和易于理解。
  2. 符合开闭原则:添加新的敌人类型只需要创建新的敌人类和相应的工厂方法,而不需要修改现有代码,符合开闭原则。
  3. 更易于扩展:可以轻松地添加新的敌人类型,而不会对现有代码产生影响。

结语

工厂方法模式是游戏开发中常用的设计模式之一,可以帮助我们更好地组织和管理对象的创建过程,提高代码的可维护性和可扩展性。通过遵循这种模式,开发者可以更轻松地适应游戏项目的需求变化,同时保持代码的整洁和可读性。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《填色之旅》《重力迷宫球》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

GitHub地址:

https://github.com/lswgit/YiyuanGameProgrammingPatterns.git

http://www.yayakq.cn/news/334771/

相关文章:

  • 搜索型网站网站标题长度
  • 网站开发设计选题背景营销网站建设哪家快
  • 温州做网站技术员无锡免费建设网站
  • 太湖县住房和城乡建设网站市建设局生物网站模板
  • 设计购物网站四川住房和城乡建设部网站官网
  • 咸阳网站建设价格wordpress站内搜索框
  • dedecms做手机网站外国做美食视频网站
  • 响应式网站一般怎么设计花2w学ui值得吗
  • 怎样做同性恋女视频网站网站优化推广怎么做
  • 深圳的网站建设公司推荐肇庆网站建设公司哪个好
  • 福建建设执业资格网站报名系统ui设计软件下载
  • 龙华大浪做网站浙江建设厅继续教育网站
  • 苏州网站建设哪家做得好版式设计优秀作品欣赏
  • 阿里云心选建站建一个网站需要多少钱网站怎么做的
  • 长春做网站哪里好前端wordpress后端python
  • 本地网站开发环境搭建wordpress自动刷评论
  • 网站建设入门php做网站教程
  • 北京做erp报价的网站自己建设网站的利弊
  • 企业网站首页设计欣赏wordpress数据名
  • 文化网站前置审批设计网站中企动力优
  • 苏州网站建设报价单微信网页版官网手机版
  • 上传网站步骤wordpress栏目调用
  • 网站建设项目技术网站建设行业产业链分析
  • 上海市建设安全协会成绩查询的网站做自己的网站收费吗
  • 网站推广的常用方法新创建的网站
  • 网站之家邯郸有没有专门做写字楼的网站
  • 吉安网站优化互联网营销师证书怎么考
  • 城网站建设医疗器械外贸网站建设
  • 专门做正品的网站手机版代做毕设要注册答疑网站
  • 河南网站seo推广淘宝网站开发成本