问题标签 [class-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
5768 浏览

c++ - 比从基类转换为派生类更好的方法

我知道这样的垂头丧气是行不通的。我需要一种可行的方法。这是我的问题:我有几个不同的派生类都来自一个基类。我的第一次尝试是创建一个基类数组。该程序必须选择(或多或少随机)不同的派生类。我曾尝试从基类转换为派生类,将其放入基类的数组中,但显然这不起作用。我真诚地希望有另一种方法,而不是简单地粘贴所有派生类的数组,因为可能有相当多的派生类。有没有更好的方法来做到这一点,我只是在胡思乱想?

如果你们都需要代码示例或更多信息,请告诉我。这对我来说很有意义,但是已经很晚了,对其他人来说可能没有意义,呵呵。

任何帮助都非常感谢,伙计们。

0 投票
4 回答
7222 浏览

javascript - Javascript:如何从类函数之一中的函数访问类属性

在我的某个类的某个函数中,我需要使用setInterval中断代码的执行。但是,在setInterval函数中,“this”不再指代“myObject”类。如何从setInterval函数中访问变量“名称”?

0 投票
1 回答
98 浏览

api - 在集合中实现“默认”项目的最佳设计

在我的示例中,我有一个 Person 类,其中有任意数量的关联地址与之关联。所以会有一个 Addresses 集合作为 Person 类的成员。

在许多使用 Person 类的应用程序中,我们只想检索“默认”地址对象。关于实现有几个设计问题:

  1. 在数据库中的每个地址记录上,我可以有一个标志来设置它是否是集合的默认值。或者,我可以有不同类型的地址(家庭、账单、送货等),并设置规则来说明如果某人有家庭地址记录,则将其用作默认值。如果没有,则使用运输等...
  2. 至于用于检索默认地址的接口,我们有很多方法可以做到这一点,我想知道一些 SO 人感觉最好的方法。

    /li>

说“这取决于您的应用程序”可能是个好建议。让我先说我们正在为我们所有的新开发构建一些基础课程。所以我不一定只看我们正在构建的第一个应用程序作为类设计的最终决定。

0 投票
24 回答
25349 浏览

design-patterns - 我如何知道何时创建接口?

我正处于开发学习阶段,我觉得我必须更多地了解接口。

我经常阅读它们,但似乎我无法掌握它们。

我读过这样的例子:Animal base class, with IAnimal interface for things like 'Walk', 'Run', 'GetLegs', etc - 但我从来没有做过什么,感觉就像“嘿,我应该使用一个接口这里!”

我错过了什么?为什么我很难掌握这个概念!我只是被这样一个事实吓倒了,我可能永远不会意识到对一个人的具体需求——主要是由于缺乏理解它们的一些方面!这让我觉得作为一名开发人员,我错过了一些顶级的东西!如果有人有过这样的经历并取得了突破,我会很感激一些关于如何理解这个概念的提示。谢谢你。

0 投票
2 回答
2866 浏览

model-view-controller - 吃豆人游戏类设计

我必须用 Java 编写一个多人吃豆人游戏来完成大学作业,到目前为止,我正在为我的设计提供一些反馈。

所以我正在尝试采用 MVC 风格,这就是我所勾勒出来的

我从来没有使用 MVC 设计过任何东西,所以我的知识实际上只是来自务实的程序员和简短的讲座,所以我很可能会误解或误解它。

此外,我看到的大多数设计简单游戏的教程根本没有提到 MVC,所以这是不是 MVC 不是一个好用的模式的情况?

到目前为止,我的想法是Game State类将成为数据存储的主要来源,并将使用 2d 数组来存储游戏状态、幽灵在哪里、吃豆人在哪里等。

Game类将是主控制器类,它将包含主游戏循环并控制数据(游戏状态)和视图之间的所有交互(可能是GUI表示 - 我只是添加了基于文本的示例)。

在我让游戏正常运行后,我将不得不将其拆分为客户端/服务器。在我看来,通过使用这个模型,将大部分数据和处理保留在服务器上并让客户端与控制器交互并绘制自己的视图不会太难。我(还)不知道这会如何影响网络上的游戏性能,所以一旦单人版本完成,我将不得不进一步研究。

任何基于我迄今为止的设计的提示或建议,将不胜感激 - 还要记住它最终必须是一个多人游戏。

干杯,

亚当

0 投票
1 回答
11485 浏览

javascript - 如何将回调函数添加到 javascript 类?

javascript中的以下代码给了我错误“this.callback is not a function

为什么 open 方法不将回调参数视为函数?

如果是这样,那么为什么我不能在 onstatechange 函数中调用它?

我如何使这项工作?

0 投票
14 回答
872 浏览

c# - 在 C# 中,普遍接受的在类中引用成员属性的方法是什么?

已通读MSDN 命名指南,但找不到明确的答案,除此之外,您通常应尽量避免使用下划线。假设我有以下内容:

上面 m_name 的正确命名约定是什么?例如,在我继承的代码中,我通常会看到:

  • m_name
  • _姓名
  • 姓名
  • myName 或其他一些随机标识符

哪一个(或另一个)最常被接受?

作为后续,在类的方法中,您是引用内部(私有)标识符还是公共属性访问器?

0 投票
13 回答
1828 浏览

java - 何时编写静态方法与实例方法是否有经验法则?

我正在学习 Java(和 OOP),尽管它可能与我现在所处的位置无关,但我想知道 SO 是否可以分享一些常见的陷阱或良好的设计实践。

0 投票
5 回答
1995 浏览

java - UML 类图资源

有没有人有任何好的资源来提高我开发类图的技能?理想情况下想要 UML 2.0 中的任何强大的教程,但搜索似乎返回的结果很差。

目前也在为最后一年的考试进行修改,真的很想尝试用一个典型的答案来练习试卷,我已经搜索了高低没有任何运气,有没有人碰巧对我可以在哪里找到一些建议?

基本上任何有助于推动我的修订的资源。会喜欢有机会看到更先进的东西并突破界限。

任何帮助表示赞赏。

谢谢,瑞奇

0 投票
16 回答
46910 浏览

class-design - 一个类应该有多少个构造函数?

我目前正在修改一个具有 9 个不同构造函数的类。现在总的来说,我认为这个类的设计非常糟糕......所以我想知道一个拥有这么多构造函数的类是否是糟糕的设计。

出现了一个问题,因为我最近向这个类添加了两个构造函数,试图重构和重新设计一个类(下面代码中的 SomeManager),以便它是可单元测试的,并且不依赖于它的每个方法都是静态的。但是,由于其他构造函数被方便地隐藏在类开头下方大约一百行的位置,所以当我添加构造函数时,我没有发现它们。

现在发生的事情是调用这些其他构造函数的代码依赖于已经实例化的 SomeManager 类,因为它曾经是静态的......结果是一个空引用异常。

所以我的问题是如何解决这个问题?通过尝试减少构造函数的数量?通过使所有现有的构造函数采用 ISomeManager 参数?

当然,一个类不需要 9 个构造函数!...哦,最重要的是,这个文件中有 6000 行代码!

这是我在上面谈论的构造函数的审查表示:

更新:

感谢大家的回复……他们非常棒!

只是想我会更新一下我最终做了什么。

为了解决空引用异常问题,我修改了其他构造函数以采用 ISomeManager。

目前,在允许重构这个特定类时,我束手无策,所以当我有空闲时间时,我会将它标记为我的待办事项列表中要重新设计的类。目前,我很高兴能够重构 SomeManager 类……它和 MyManager 类一样庞大而可怕。

当我开始重新设计 MyManager 时,我将寻找一种方法将功能提取到两个或三个不同的类中......或者确保遵循 SRP 需要多少。

最终,我还没有得出任何给定类都有最大数量的构造函数的结论,但我相信在这个特定的实例中,我可以创建两个或三个类,每个类都有两个或三个构造函数。