首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对ISP还是不对ISP?

对ISP还是不对ISP?
EN

Software Engineering用户
提问于 2018-09-18 07:42:26
回答 1查看 221关注 0票数 1

我有一个设计问题,我想这并不是很少见的事情,所以肯定有一些很好的实践。

我有两个域实体: Process和Task。进程本质上是一组任务列表。

流程的功能是知道它由什么样的任务组成(当流程进入“启动”状态时,使用一个工厂创建任务实例),并根据包含的任务的状态来评估它的状态。

一个任务有很多功能,但是这个过程实际上只需要它的状态,所以我想我应该在这里应用ISP。为此,我创建了一个接口TaskStatus,它是在基本抽象任务类中实现的,该过程包含一个TaskStatus对象集合。

到目前为止有意义吗?

现在的问题是,不同的组件(我们称之为TaskProcessor )从进程中获取任务列表,并且需要对任务对象的不同类型的访问。

我该怎么解决这个问题?让我保留ISP的一种方法是将任务列表移出进程,进入全局的单例TaskRepository。进程和TaskProcessor都可以查询TaskRepository以获得他们所需要的东西,而不依赖于他们不需要的任何功能。

我并不特别喜欢这个解决方案,原因有三: 1.一般来说,我认为全局单子越少越好。它将保留任务列表的责任移出了流程,从SRP的角度来看,这可能是一件好事,但我确实认为,从DDD的角度来看,它实际上属于这个过程。3.与仅仅改变正在处理的任务列表的类型和使用它相比,这增加了相当多的复杂性。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2018-09-18 08:07:28

如果Process的工作是将Tasks提供给TaskProcessor,以便它可以对它们执行Task-specific (而不仅仅是TaskStatus things),那么它需要的不仅仅是状态,它应该保存Task对象,而不是TaskStatus引用。

问题是,向一个Process提供数据是否真的是Processor的工作,或者Processor是否应该从系统中的另一个地方获得它的输入--也许是Process从哪里得到的。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/378597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档