首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该扩展一个接口还是保持它的独立性?

我应该扩展一个接口还是保持它的独立性?
EN

Software Engineering用户
提问于 2015-03-12 04:27:25
回答 2查看 1.1K关注 0票数 0

我试图决定是用其他方法扩展基本接口,还是创建几个独立的接口。我有一个Task接口,如下所示

代码语言:javascript
复制
interface Task
{
    public function name();
    public function run(array $args);
}

现在,我想添加可选的descriptiondependencies方法。我应该像这样创建一个新的DetailedTask接口吗?

代码语言:javascript
复制
interface DetailedTask extends Task
{
    public function description();
    public function dependencies();
}

通过这种方式,我可以选择为基本任务类实现基本Task接口,或者在需要描述和依赖关系时实现DetailedTask接口。或者,我可以为这样的额外方法创建单独的接口。

代码语言:javascript
复制
interface Describable
{
    public function description();
}

interface TaskDependent
{
    public function dependencies();
}

根据界面偏析原理,第二种更好,因为它更灵活。但是,除了Describable实例之外,我从来没有预料到会在任何事情上使用TaskTaskDependent。额外的接口似乎增加了额外的复杂性。我应该用哪种技术?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2015-03-12 04:54:30

首先,关于你的问题的细节:

现在,我想添加可选的描述和依赖关系方法。

如果您想要一个可选的方法,那么您不应该选择接口,因为按照接口规则,您必须在实现类中定义方法。见PHP接口

因此,根据该规则,您的第一个解决方案将无法工作,因为如果定义实现DetailedTask的类,那么该类必须同时定义方法描述和依赖项。

第二种方式将使您可以自由选择任何您想要实现的接口。

票数 2
EN

Software Engineering用户

发布于 2015-03-12 04:55:38

在这种情况下,总是使用不同的接口。因为任务部分是强制性的,第二部分是可选的。

接口总是强制覆盖其中提到的所有方法。

现在想想,如果你不想使用可选的部分。但你还是得重写它。即使它什么都没做。

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

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

复制
相关文章

相似问题

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