- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是我们尝试使用 MVC (PHP) 框架。在讨论了很多之后认为 MVC 非常好,但我错过了编写可重用模型(应用程序)逻辑的可能性。所以,我不确定我们是否有在 MVC 框架中实现我们的软件的正确方法。
首先,我将描述我们目前使用的非 MVC、oo 方法。
例如 - 我们正在开发一些浏览器游戏(是的,这是我们的职业)。假设我们有一个玩家对象。我们经常使用这个玩家对象。我们有一些不同的页面,您可以在其中购买思想,因此您需要在玩家的“银行账户”上进行“金钱”交易,或者想象您可以与其他玩家进行战斗。我们有几个战斗脚本,这些脚本需要 2 个或更多玩家对象(这取决于战斗类型,即部落战斗、玩家对玩家战斗......)。
因此,我们有几个具有不同战斗逻辑的页面(和 Controller )。但是每个 Controller 都使用玩家对象来计算玩家拥有的所有属性和元素,以及玩家将进行的伤害和防御。
那么,在 MVC 模型的情况下,我们如何重用播放器对象中的逻辑?在不同的战斗 Controller 和模型中复制所有必要的逻辑是不好的。
我认为“黄金交易”逻辑将是一个很好的例子,可以为您提供更多详细信息。打架时你需要交易功能,如果你战胜了其他玩家并掠夺了他的一些金币,你需要交易功能来购买一些东西,你需要交易功能来消费一些金币到玩家公会...
所以,我会说在一个玩家模型中定义所有这些功能是一种糟糕的方法!我可以说你这些玩家模型会非常大(实际上我们的问题是我们的玩家等级真的很大 - 它是一个神等级)
你认为这个问题有 MVC 风格的解决方案吗?
最佳答案
我会说你把代码放在最有意义的地方,你不需要在其他地方复制它。
如果某些操作总是需要 Player 对象,但可能会在不同的 Controller 之间使用,那么 Player 类将是放置它的合乎逻辑的位置。另一方面,如果一些逻辑只需要在某个 Controller 的上下文中完成,并且可能涉及其他类,那么它可能应该在 Controller 中 - 或者也可能在其他某个类中。
如果您在弄清楚逻辑应该去哪里时遇到问题,可能是因为您的函数不够细化和可重用。 MVC 的某些方面肯定会迫使您更多地考虑关注点的分离和保持事物的干燥,而不是“普通”的 OOP 方法……所以您最终可能会分解当前编码的操作,这些操作位于单个函数现在变成不同类上的多个函数,以在正确的位置获得正确的代码。
例如——这些根本不是具体的建议,而只是一个随机可能的思考过程——也许玩家之间转移“黄金”的过程需要分解成更细粒度的过程。玩家类可能会执行更改余额的基本任务,但随后 Controller 可能会执行该过程的特定部分,例如验证向/从谁转移黄金以及原因。
关于model-view-controller - 如何在 MVC 模型中编写可重用的业务逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892396/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在这里感觉有些不对劲,所以我希望社区提供意见 - 也许我以错误的方式处理这个问题...... 问:是否适合使用传统的基础架构日志框架(如 log4net)来记录业务事件? 当我说业务事件时,我的意思
技术也好,业务也罢; 01 【什么是业务?】 对于那些久经职场的人,也很难一句话说明白; 业务,作为工作中绝对的核心点,即便在一个公司待的足够久,
三天研发,两天设计; 01 【优先做设计方案】 职场中的那些魔幻操作,研发最烦的是哪个? 作为一个数年且资深的互联网普通开发,可以来说明一下为什么
业务、系统、接口(interface)、持久化类是什么意思?用一些例子解释一下? 最佳答案 业务可能是应用程序中所有功能部分发生的部分(即计算或规则) 系统是您的操作系统 接口(interface),
我无法创建带有指向移动应用的外部链接的简单广告。我已正确设置访问权限,可以创建广告系列、广告集、加载图像,但在创建广告期间出现错误: Ads and ad creatives must be asso
我是软件工程专业的学生,现在我正在为我的期末项目工作,安排在交易日进行商务配对。 这个想法是将卖家(开发人员)和买家(有经济能力的人)在一起。 算法应该像“快速约会”。 假设我有 15 张 table
我们只需按照以下说明在 AWS Cloudformation 上部署企业 WhatsApp API: AWS WhatsApp API 所以一切正常,部署正确完成,问题出在“SSL 配置”选项上,我们
我的应用因为以下原因被拒绝了 Guideline 3.2 - Business We found that your app is not appropriate for the App Store
您好,我想在我的网络应用程序中使用 WhatsApp 业务 API。我已经在 postman 中测试过了。 每当在 WhatsApp 选项卡下的 Facebook 业务页面中运行示例 curl 代码时
我是 Skype for Business 技术的新手,我正在尝试部署一个我愿意与 Skype WebSDK 和 AppSDK 一起使用的服务器。 起初我尝试使用Skype进行在线商务,但websdk
Apple 开发人员以此为由拒绝了我的应用。 “业务 - 3.1.1您的应用程序包含一个帐户注册功能,该功能被视为对外部机制的访问,以便在应用程序中使用购买或订阅。此功能不符合 App Store 审
我正在玩 Realm for Android。 我喜欢自动更新对象的想法,但我对它的软件架构有顾虑。 我已经看到许多提议的架构都指定了一个层来处理数据/数据库访问,理想情况下,更高层不会知道有关数据库
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 10 个月前。 Impro
我正在尝试设置 Whatsapp 业务 API。 引用Link用于设置。 我正在使用 Windows 10 操作系统。 -- 仅供引用。 在初始设置部分,使用命令 docker-compose up
我正在尝试使用 Facebook Business SDK 创建一个 facebook Adaccount .但是当我使用方法 createAdAccount 时,它会给我一个错误。请参阅下面的图片。
我想写一个概念证明 MonoMac使用 c# 和 Razor 呈现 html“ View ”的应用程序。 这可能吗? 如果没有,是否有人推荐与 Razor 的简单性相比的任何其他模板引擎。如果必须的话
无法解析 ':business:diary@debug/compileClasspath': Could not resolve project :fun:push. 的依赖关系 无法解析项目:fun
当我尝试在 Visual Studio Professional 2015 14.0.23107.0 中打开某些 XML 文件时,XML 编辑器出现白屏并显示以下文本: 为什么我不能编辑这个文件?此项
我是一名优秀的程序员,十分优秀!