问题标签 [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.
python - 简化复杂的类层次结构
为了最大限度地重用代码,我为我的 Python 代码创建了一个相当复杂的类层次结构。它是这样的:
只有类层次结构的叶子被实例化为对象。这确实达到了最大化代码重用的目的,但是代码本身很复杂(有些类有 20 个左右的方法),并且考虑到许多级别,找到实现某些东西的位置可能很耗时。
我已经尝试提取大量功能并将该功能放在一个单独的对象中,但我还没有找到一个好的方法来做到这一点,因为几乎所有的功能都依赖于公共数据。即,我可以将一些代码移动到不同的对象,但它需要回溯到大的复杂层次结构以获取所需的数据,因此它并不是真正的封装。
有人对如何使这更易于管理有任何建议吗?
delphi - 在 Delphi 中将接口引入现有的类层次结构
将类层次结构的祖先从 TObject 更改为 TInterfacedObject 是否有任何副作用,以便我可以在继承链的下游实现接口?
我已经在 Delphi 中编程了几年,但从未遇到过接口。我习惯于在其他语言中使用它们。现在我再次参与了一个 Delphi 项目,我想开始利用它们,但我知道它们的工作方式与 Java 或 C# 中的不同。
language-agnostic - 表设计和类层次结构
希望有人可以通过一个例子或一些建议的阅读来阐明这个问题。我想知道在类层次结构对等之后为表建模的最佳设计方法是什么。这可以通过一个例子来最好地描述:
现在,当对表进行建模以与此类层次结构同步时,我使用了非常相似的东西:
我遇到的问题是试图弄清楚如何将每条Card
记录与相应表中包含其详细信息的记录相关联。具体来说,如何确定我应该查看哪个表。
我应该添加一VARCHAR
列来Card
保存关联表的名称吗?这是我和我的同龄人达成的唯一解决方案,但它似乎太“肮脏”了。保持设计的可扩展性是这里的关键,允许轻松添加新的子类。
如果有人可以提供一个示例或资源来显示镜像类/表层次结构的干净方式,那将不胜感激。
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
自己身上吗?所有子类都应该向父类注册吗?我需要一个新的班级吗?
在这种层次结构中实例化子类对象的最佳方法是什么?
java - 我可以在 Eclipse 的类型层次结构视图中看到接口吗?
当我检查从 Eclipse 中的接口派生的类的类型层次结构时,它不显示接口。有没有办法配置 Eclipse 以显示类型层次结构中的接口?或者有没有其他方法可以查看这些信息?
java - 我有一个带有@Override 的方法,我怎样才能看到声明接口?
我正在使用带有@Override 注释的方法。如果这覆盖了我正在使用 Ctrl-t 的类并且可以导航到声明类型。如果这是一个接口,有没有办法获得声明?
我问了另一个类似的问题,但这个问题更符合我的需求。
ruby - Ruby:我们如何识别对象 o 在类层次结构中是否具有类 C 作为其祖先?
在 Ruby 中,是否可以使用任何方法来识别对象 o 在类层次结构中是否具有类 C 作为其祖先?
我在下面给出了一个例子,我使用一种假设的方法has_super_class?
来完成它。我应该如何在现实中做到这一点?
预期输出:
java - spring框架中根据实体对象调用不同的Service api
我正在开发一个使用 spring 框架设计的 Web 服务应用程序,其中我有不同的实体类(ActivityA、ActivityB、ActivityC ...),它们继承自基类“活动”
现在我已经为基类和所有子类在服务层编写了不同的服务 api。(命名,ActivityService,ActivityAService,ActivityBService,ActivityCService..)
对每个活动进行类似操作的所有方法都放在基类(ActivityService)的服务 api 中,并放在各自的服务中。
我通常知道我正在处理哪个对象,我调用了相应的服务 api。但在特定情况下,我有活动对象(不知道它是哪个子类)并且必须编写一个对所有实体对象都不同的方法。
问题:有没有办法,我可以根据我拥有的实体对象调用不同的服务。(我拥有的对象是实体,不是服务,我不能做任何硬编码来获取服务对象)
php - PHP 对象浏览器
我想浏览大量用 PHP 编写的代码,拥有各种类及其方法的图形表示会很有用。
您知道使这成为可能的(免费)工具吗?
c++ - 破译 vtable 转储
我在 C++ 中“玩”虚拟继承,我想知道一个类对象是如何布局的。我有这三个类:
(我认为他们是正确的:p)
我用-fdump-class-hierarchy
g ++,我得到了这个
现在这些到底是(int (*)(...))-0x00000000000000010
什么C::_ZThn16_N1C6setIntEi and (int (*)(...))0
??有人可以解释转储吗?
谢谢你。