我理解使用数据驱动的实体组件系统进行游戏开发的吸引力。当然,我正试图找到其他领域来应用这种范式。当我即将开始开发一个小型企业应用程序时,我一直想知道Entity-Component如何适应它。但是,除了游戏之外,我找不到任何关于在Entity-Component中使用Entity-Component的示例或讨论。有原因吗?除了游戏之外,在软件中使用Entity-Component会有什么优势吗?
答案 0 :(得分:5)
(为死灵法术道歉)
来自企业背景,我最近一直在考虑这个问题。实体组件系统相对较新,代表了与大多数业务开发人员所经历的完全不同的设计范例。
考虑到我自己公司的例子,我看到了一些实体组件系统会带来好处的场景。
例如,在我们的主要应用程序中,地址与联系人和组织相关联。 (在我们的数据库中有ContactAddress和OrganisationAddress连接表。)一个客户希望将项目与地址相关联。有很多方法可以实现这一点,但基于实体组件的方法对我来说似乎相当优雅 - 只需将一个可寻址组件添加到Project实体,GUI就可以自行排序。
相反,我们可能会添加一个新的连接表和新的数据输入页面(虽然重新使用常用控件)。
我认为,主要的缺点是(初始)缺乏开发人员对将这种范例应用于商业软件的最佳方式的认识,正是因为它似乎以前没有完成。一旦你开始采用这种方法,你就会致力于它 - 如果一旦你的项目达到一定的复杂性就会令人沮丧,那么没有重大改写就没有出路。