constructor - 在超类责任上构造派生类
问题描述
拥有像 Animal 这样的具有方法和属性的实体,假设我将拥有扩展 Animal 的其他实体,例如 Cat、Dog 等。所以,我的应用程序知道 Animal,我的意思是,方法接收 Animal 作为参数,在我的数据库中我有一个名为 Animals 的表。因此,为了构造 Cat、Dog 等的实例,我有三个选择:
- 为超类中的每个派生类创建一个构造函数,该构造函数将派生类作为参数
- 在派生类中创建调用超类中方法的构造函数
- 为每个派生类使用模型映射器,以便将派生类的属性映射到超类
我不喜欢选项 1,因为首先,对于我可以创建的每个派生类,我应该打开类 Animal 并在其上创建一个构造函数。这将违反 OPEN/CLOSED 原则。第二个原因是我认为超类不应该知道派生类,只知道对面。你同意吗?
选项 2 和 3 呢?
谢谢!
解决方案
推荐阅读
- javascript - 表格不适用于学校项目。我还必须将答案放入数组中
- scrollview - SwiftUI - 根据滚动视图的位置更改视图的不透明度
- python - 对象上的 Python reduce 函数
- python - 如何修复“self._root = parser._parse_whole(source)”错误
- javascript - ESM 从 index.js 的文件夹中导入所有文件不起作用
- outlook - AppSource 中是否接受 SSO Outlook 插件
- java - 为什么我创建的随机矩形没有出现在我的游戏中?
- r - DT 中的引文:数据表
- java - 更有效的分割字符串的方法
- javascript - 将用户重定向到 App/Play 商店或 App 本身