actionscript-3 - 为真实世界还是适当的OOP世界建模?或两者?

标签 actionscript-3 design-patterns oop

我正在写一个游戏,其中鼠标驱动的 Controller 对象单击玩家对象以使其执行某项操作。

有两种方法可以启动鼠标和播放器之间的交互:

  • Controller 调用播放器的功能:
    Controller 监听鼠标事件。当鼠标单击出现在屏幕上的任何位置时, Controller 将在单击的点下方搜索所有对象。如果其中一个对象是播放器对象,并且其“clickable”属性为true,则调用其适当的函数。
  • 播放器调用 Controller 的功能:
    播放器监听鼠标事件。当在播放器上单击鼠标,并且播放器自己的“clickable”属性为true时,请调用 Controller 的适当功能。

  • 我的困境是,第一个选项似乎更直观地了解现实世界中发生的场景,但是第二个选项在正确的面向对象设计中似乎更直观,因为它不需要查看另一个对象的属性,这违反了某种程度上的封装( Controller 必须调查播放器以读取其“clickable”属性)。此外,第二个选项似乎与“ Controller ”设计模式保持一致。

    这对我来说一直都是一个挣扎-我是否无视正确的面向对象设计(例如选项1)还是使用一种似乎与现实世界背道而驰的实现(例如选项2)?

    我希望我缺少某种中间立场。

    最佳答案

    This is always a struggle for me -- do I defy proper object-oriented design (e.g. option 1) or do I use an implementation that seems counterintuitive to the real world (e.g. option 2)?



    我认为面向对象的目的不是为现实世界建模。

    我认为OO模型经常遵循现实世界模型的一个(the?)原因是现实世界变化不大:因此选择现实世界作为模型意味着软件不会变化很大,即维护成本低廉。

    对真实世界的忠实本身并不是设计目标:相反,您应该尝试使其他指标最大化的设计,例如简单。

    “面向对象”中的“对象”是软件对象,不一定是现实世界中的对象。

    关于actionscript-3 - 为真实世界还是适当的OOP世界建模?或两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354312/

    相关文章:

    actionscript-3 - 只为一个组件覆盖获取宽度或高度 - Flex Mobile

    actionscript-3 - AS3 : Why those compiler skip Tweenlite line?

    c# - 每个进程是否只有一个静态变量实例?

    flash - 使用 Flash 保存从网络摄像头捕获的视频

    actionscript-3 - 有没有办法禁用 ColorPicker 的左/右键盘箭头?

    .NET 项目架构

    java - 如何在 Kotlin 中实现 Memento 模式

    c++ - 有多少听众是太多观察者模式?

    java - 在 JAVA 和 Spring 中设计自定义工作流程

    swift - 只能通过使用最终类来满足的 Swift 协议(protocol)要求