问题标签 [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 投票
2 回答
1793 浏览

php - 组织 PHP 类层次结构的最佳方法

我的大多数项目都使用了一个有点原始的框架,但是我想到了一个通用的设计问题,我还没有解决。对于给定的应用程序,我应该将特定于应用程序的类结构与框架的结构分开,还是在框架之上构建不是一件坏事?

例如,假设我有一个带有基本 Controller 类的框架,并为我的应用程序的给定部分扩展了它。哪种安排最有意义,为什么?

类结构 A:

  • 调试时直观、易于查找源文件。
  • 文件命名/目录结构反映了类层次结构。

类结构 B:

  • 保持框架模块化,易于更换/更新。
  • 给目录结构增加了一些复杂性,目录/文件命名不再遵循类层次结构。

总的来说,我知道这将取决于个人喜好,但我想确保在决定走哪条路之前权衡所有利弊。它实际上归结为类命名和目录结构,因为在任何一种情况下,实际的层次结构都将保持不变。

0 投票
1 回答
6013 浏览

c# - 实体框架中的类和接口层次结构?

我有两个相关的类,它们共享一个公共接口,并且都存储在同一个底层数据库表中。但是,Entity Framework 生成一个公共类,我确实需要两个不同的类。我该如何解决这个问题?最好使用基类而不是接口吗?如何更改 EF 模型以提供映射在一张表上的两个类?

编辑: AccountType 属性确定类的类型;用户或组。

一些简单的代码:

0 投票
7 回答
10585 浏览

.net - 在 .NET 中显示类层次结构的工具

有没有一种方法/工具可以向我展示在我的项目中实现某个接口的所有类/接口?在 Eclipse (Java) 中,我会使用上下文菜单“Open Type Hierarchy”选项,它会向我显示一个扩展所选类型的(漂亮的)类型树。.NET 中是否有工具可以做同样的事情?

0 投票
3 回答
3823 浏览

hibernate - Hibernate 中每个具体类层次结构的表

我有以下休眠映射,必须使用每个具体类层次结构的表进行映射:

这意味着在数据库中我只有 2 个表:

  • 房子(id_property(PK),地址,noOfRooms,totalArea,价格)
  • 土地(id_property(PK),地址,面积,单价)

据我了解,在这种情况下,需要在调用 .save() 之前显式生成 id,所以我的问题是:如何创建自动生成 id 的策略,以便来自具体类的 id加入时形成一个连续的域。

0 投票
4 回答
3603 浏览

nhibernate - NHibernate - 改变子类型

你如何去改变 NHibernate 中一行的子类型?例如,如果我有一个客户实体和 TierOneCustomer 的子类,我需要将客户更改为 TierOneCustomer,但 TierOneCustomer 应该具有与原始客户实体相同的 ID (PK)。

映射看起来像这样:

我正在使用每个类层次结构模型一个表,因此使用普通 sql,只需对鉴别器 (CustomerType) 进行 sql 更新并设置与类型相关的适当列。我无法在 NHibernate 中找到解决方案,因此不胜感激。

考虑到这个用例,我也在考虑模型是否正确,但在我走这条路之前,我想首先确保按照上述方式进行操作实际上是可能的。如果没有,我几乎肯定会考虑改变模型。

0 投票
3 回答
666 浏览

delphi - 如何链接“并行”类层次结构?

我有一个小的类层次结构,其中每个类对应于某个 TComponent 后代(例如基类 TDefaultFrobber,其后代 TActionFrobber 和 TMenuItemFrobber,分别对应于 TComponent、TCustomAction 和 TMenuItem)。现在我想要一个工厂(?)函数是这样的:

我可以以某种方式重构它以使用虚拟函数或类似的东西而不是 if-else 级联或 RTTI 吗?

编辑:我现在的解决方案:

感谢 Cesar、Gamecat 和 mghie。

0 投票
6 回答
591 浏览

.net - .NET 对象层次结构 - 事件或不事件

你的工作是设计一个支持任务跟踪的 Project Plan 类库(类似于 MS Project 的工作方式)。这个类库有一个Task对象(等等)。

Task对象具有EstimatedHours( Double)、StartDate( DateTime) 和EndDate( DateTime) 属性等。一个Task对象可以有一个父对象Task和多个子Task对象。具有子代(是父代)的 a的EstimatedHoursStartDateEndDate属性Task取决于其直接子代的那些属性。parentTask是其孩子StartDate中最早的。StartDateparentTask是其孩子EndDate中最新的。EndDate父级是其子级的Task总和。因此,更改具有子项的这些属性是无效的。EstimatedHoursEstimatedHoursTask

您将如何处理在具有父级的任务上更改 EstimatedHours、StartDate 或 EndDate 的用例?(父级的属性是其子级的反映,因此对子级的任何更改都可能需要调整父级的属性以适当地反映更改)

一种选择是在每个属性更改时设置一个事件。父级Task将在其直接子级Task对象上侦听这些事件,并在这些事件发生时对自己的属性进行适当的更改。这是一个好方法,还是有更好的方法?你会怎么做?

下面是一个Task对象可能是什么样子的基本概念:

0 投票
1 回答
993 浏览

c# - 序列化 POCO 排除类成员

我希望在其类层次结构树中创建一个 POCO [Serializable] 但不是任何其他类成员。我知道有 [NonSerialized] 仅适用于字段,但是有没有办法在 POCO 上使用 [Serializable] 排除它们或选择特定成员?

0 投票
8 回答
5392 浏览

java - 实现接口的类和那个接口之间有什么关系吗?

考虑这个类层次结构:

  • Book extends Goods
  • Book implements Taxable

众所周知,子类与其超类(is-a)之间存在关系。

Book问:和之间是否存在类似“is-a”的关系Taxable

好的答案,但你说“is-a”也是和之间的关系BookTaxable“ is-a”是之间的关系,接口不是类!

0 投票
5 回答
229 浏览

.net - 有没有办法找到哪些 .NET 类实现了某个接口?

例如,如果我想查看实现 IList 或 IDictionary 的 .NET 选项是什么。有没有办法在 MSDN 文档中找到它?