问题标签 [class-hierarchy]

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 投票
3 回答
575 浏览

python - 简化复杂的类层次结构

为了最大限度地重用代码,我为我的 Python 代码创建了一个相当复杂的类层次结构。它是这样的:

只有类层次结构的叶子被实例化为对象。这确实达到了最大化代码重用的目的,但是代码本身很复杂(有些类有 20 个左右的方法),并且考虑到许多级别,找到实现某些东西的位置可能很耗时。

我已经尝试提取大量功能并将该功能放在一个单独的对象中,但我还没有找到一个好的方法来做到这一点,因为几乎所有的功能都依赖于公共数据。即,我可以将一些代码移动到不同的对象,但它需要回溯到大的复杂层次结构以获取所需的数据,因此它并不是真正的封装。

有人对如何使这更易于管理有任何建议吗?

0 投票
3 回答
435 浏览

delphi - 在 Delphi 中将接口引入现有的类层次结构

将类层次结构的祖先从 TObject 更改为 TInterfacedObject 是否有任何副作用,以便我可以在继承链的下游实现接口?

我已经在 Delphi 中编程了几年,但从未遇到过接口。我习惯于在其他语言中使用它们。现在我再次参与了一个 Delphi 项目,我想开始利用它们,但我知道它们的工作方式与 Java 或 C# 中的不同。

0 投票
2 回答
780 浏览

language-agnostic - 表设计和类层次结构

希望有人可以通过一个例子或一些建议的阅读来阐明这个问题。我想知道在类层次结构对等之后为表建模的最佳设计方法是什么。这可以通过一个例子来最好地描述:

现在,当对表进行建模以与此类层次结构同步时,我使用了非常相似的东西:

我遇到的问题是试图弄清楚如何将每条Card记录与相应表中包含其详细信息的记录相关联。具体来说,如何确定我应该查看哪个表。

我应该添加一VARCHAR列来Card保存关联表的名称吗?这是我和我的同龄人达成的唯一解决方案,但它似乎太“肮脏”了。保持设计的可扩展性是这里的关键,允许轻松添加新的子类

如果有人可以提供一个示例或资源来显示镜像类/表层次结构的干净方式,那将不胜感激。

0 投票
1 回答
139 浏览

oop - 如何改进事件类的层次结构?

对于Stack Overflow 聊天的 XMPP 接口,我正在解析来自聊天的 JSON 提要,并为每个聊天事件生成 Ruby 对象,例如发送的消息、发送的编辑、用户登录或注销等。我还为“斜线-命令”发送到 XMPP 服务器,例如“/help”或“/auth”,以允许 XMPP 用户使用他们的 Stack Overflow 聊天帐户进行身份验证。

我已经在层次结构中设置了这些类,我觉得这很合逻辑:

您可以在 Trac通过 SVN查看完整的层次结构和源代码。

我的问题是双重的:首先,实例化这些事件的最佳方式是什么?我目前正在做的是使用一个巨大的switch语句解析 JSON 事件——嗯,它是 ruby​​,所以它是一个case语句——而且,它还不是巨大的,如果我继续这样的话:

但我想必须有更好的方法来处理它!像SOChatEvent.createFromJSON( json_data )......但是,构建我的代码以便创建正确子类的对象以响应给定的最佳方式是event_type什么?

其次,我实际上还没有使用 ant 子类SOXMPPUserCommand。现在所有命令都只是SOXMPPUserCommand其自身的实例,并且该类有一个execute基于命令的正则表达式切换的方法。几乎相同的问题 - 我知道有更好的方法,我只是不确定最好的方法是什么:

和:

我知道有更好的方法可以做到这一点,只是不确定具体是什么。创建子类的责任应该SOXMPPUserCommand落在SOXMPPUserCommand自己身上吗?所有子类都应该向父类注册吗?我需要一个新的班级吗?

在这种层次结构中实例化子类对象的最佳方法是什么?

0 投票
2 回答
3616 浏览

java - 我可以在 Eclipse 的类型层次结构视图中看到接口吗?

当我检查从 Eclipse 中的接口派生的类的类型层次结构时,它不显示接口。有没有办法配置 Eclipse 以显示类型层次结构中的接口?或者有没有其他方法可以查看这些信息?

0 投票
2 回答
126 浏览

java - 我有一个带有@Override 的方法,我怎样才能看到声明接口?

我正在使用带有@Override 注释的方法。如果这覆盖了我正在使用 Ctrl-t 的类并且可以导航到声明类型。如果这是一个接口,有没有办法获得声明?
我问了另一个类似的问题,但这个问题更符合我的需求。

0 投票
4 回答
1270 浏览

ruby - Ruby:我们如何识别对象 o 在类层次结构中是否具有类 C 作为其祖先?

在 Ruby 中,是否可以使用任何方法来识别对象 o 在类层次结构中是否具有类 C 作为其祖先?

我在下面给出了一个例子,我使用一种假设的方法has_super_class?来完成它。我应该如何在现实中做到这一点?

预期输出:

0 投票
1 回答
1305 浏览

java - spring框架中根据实体对象调用不同的Service api

我正在开发一个使用 spring 框架设计的 Web 服务应用程序,其中我有不同的实体类(ActivityA、ActivityB、ActivityC ...),它们继承自基类“活动”

现在我已经为基类和所有子类在服务层编写了不同的服务 api。(命名,ActivityService,ActivityAService,ActivityBService,ActivityCService..)

对每个活动进行类似操作的所有方法都放在基类(ActivityService)的服务 api 中,并放在各自的服务中。

我通常知道我正在处理哪个对象,我调用了相应的服务 api。但在特定情况下,我有活动对象(不知道它是哪个子类)并且必须编写一个对所有实体对象都不同的方法。

问题:有没有办法,我可以根据我拥有的实体对象调用不同的服务。(我拥有的对象是实体,不是服务,我不能做任何硬编码来获取服务对象)

0 投票
4 回答
2180 浏览

php - PHP 对象浏览器

我想浏览大量用 PHP 编写的代码,拥有各种类及其方法的图形表示会很有用。

您知道使这成为可能的(免费)工具吗?

0 投票
2 回答
2759 浏览

c++ - 破译 vtable 转储

我在 C++ 中“玩”虚拟继承,我想知道一个类对象是如何布局的。我有这三个类:

(我认为他们是正确的:p)

我用-fdump-class-hierarchyg ++,我得到了这个

现在这些到底是(int (*)(...))-0x00000000000000010什么C::_ZThn16_N1C6setIntEi and (int (*)(...))0??有人可以解释转储吗?

谢谢你。