我知道在定义implement
时我可以Entity
interface,但我希望能够将此接口的所有实现视为拥有共享表,共同的Repository
。为了更好地说明我的问题,这里有一个两个例子:
在GitHub上,用户和组织都可以拥有存储库。我们假设有一个User
和一个Organization
实体。它们都实现了RepositoryOwner
接口,它将类似Repository
数组的内容指定为关系。
现在来看看GitHub的"Trending developers" page。它会同等地处理User
和Organization
,就像有一个可用于获取数据的公共Repository<RepositoryOwner>
一样。
用户可以上传不同类型资源(如图片,视频和文档)的网站。所有这些类型都有自己的Entity
具有不同的属性,但它们都实现了Resource
接口。在用户的个人资料页面上,列出了该用户上传的所有资源。 Repository<Resource>
将再次非常有用,资源类型使用typeof
确定并使用图标显示。
答案 0 :(得分:2)
我假设您打算共享一个公共表,您希望从中获得另外两个表?在这种情况下,您可以定义接口IRepositoryOwner
并在基本实体RepositoryOwner
中实现它。然后将RepositoryOwner
扩展为Organization
和User
个实体。
这将允许您检索RepositoryOwners
的数组,但repositoryOwner instanceof User
将为false。将repositoryOwner
投射到User
是不可能的。您将缺少派生类属性。