javascript - 如何设计类 Bill 和类 SimplifiedBill 之间的关系?
问题描述
正如标题所提到的,我有SimplifiedBill
,它只有date和finalPayment,我也有Bill
,它具有与 相同的属性SimplifiedBill
,还有所有其他详细信息(tax、user data、services等)。
一个解决方案可能是Bill
从继承SimplifiedBill
,但我认为这在概念上是不正确的,因为SimplifiedBill
是你从中得到的东西Bill
,所以Bill
不是“下面”的东西SimplifiedBill
,它不会从它继承任何东西。
关于如何在这里实现类设计的任何想法?
编辑:过程如下。
我有一个SimplifiedBill
从后面得到的列表,当我点击其中一个时,我请求并从 api 中获取Bill
并进入详细视图。
如果您想知道,我正在使用 Angular,并且我有一个ListComponent
(或视图)我的SimpleBill
对象,当我单击其中一个时,我会转到DetailComponent
,在那里我可以看到特定Bill
的 . 当我从一个视图转到另一个视图时,我无法传输 object SimpleBill
,而只能传输它的 id (或其他一些字段)。
解决方案
不,我同意,从 SimplifiedBill 继承在概念上是不正确的。一般来说,我认为谨慎使用继承是可取的。我很少看到它被正确使用。
相反,我会推荐一种组合方法:如果 Bill 包含 SimplifiedBill,那么我认为拥有一个具有细节属性的数据结构 Bill 是有意义的:
let bill = {
details: {...},
simplifiedBill: {...}
}
请注意,这里我使用了一个简单的对象(当您使用 javascript 时,它也可能值得考虑),但它同样适用于基于类的方法。不过,您可能想为简化的账单想一个不同的名称。也许像“摘要”之类的东西。
但总的来说,您最好想到可能不太适合这里的继承概念。
推荐阅读
- python - 运行时如何从代码中删除 \n,
- string - 表示一定数量的字符串所需的 trie 节点数
- javascript - 带有点击事件的条件是否适用于否定语句?
- r - 创造在梦幻足球联赛中获胜的累积概率
- angular - 如何在 Angular 中对通用组件进行单元测试
- angular - 用于与 Angular 应用程序通信的 Spring Boot + 安全配置
- visual-studio-mac - 为什么我的 .editorconfig 文件被忽略?
- java - 如何从sqlite表中获取最后一个时间戳日期
- r - 向数据框或 RMD 对象添加描述
- authentication - 我想对登录表单中的密码字段使用 md5 加密方法而不是现有的 bcrypt 加密方法?