Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 代码气味-仅1个混凝土类和接口_Design Patterns_Interface - Fatal编程技术网

Design patterns 代码气味-仅1个混凝土类和接口

Design patterns 代码气味-仅1个混凝土类和接口,design-patterns,interface,Design Patterns,Interface,我有一个界面: interface DataExtractor { public function extractData($dataSource); } 我最后只得到了一个具体的例子,这个例子是通用的,足以满足我所有的需要 因此,对于如何命名这个具体的类,我有一个问题,这让我想问,这是否是一种代码味道,我不应该在一开始就拥有这个接口 默认数据提取器 BaseDataExtractor 将接口更改为iDataExtractor,将具体类更改为DataExtractor 这些似乎都是错误

我有一个界面:

interface DataExtractor {
  public function extractData($dataSource);
}
我最后只得到了一个具体的例子,这个例子是通用的,足以满足我所有的需要

因此,对于如何命名这个具体的类,我有一个问题,这让我想问,这是否是一种代码味道,我不应该在一开始就拥有这个接口

  • 默认数据提取器
  • BaseDataExtractor
  • 将接口更改为iDataExtractor,将具体类更改为DataExtractor

这些似乎都是错误的

我会选择第三个选项——删除接口。当您不需要间接寻址时,您将在所有类上放置接口;只是让人困惑。代码越少越好。当您需要抽象时,就应该添加接口。到时候,重构工具会使这项任务变得非常简单。

我会选择第三种选择——删除接口。当您不需要间接寻址时,您将在所有类上放置接口;只是让人困惑。代码越少越好。当您需要抽象时,就应该添加接口。重构工具将使任务变得非常简单。

除了有多个实现之外,还有其他好处-

  • 测试-类可能会密封公共方法,这些方法随后无法被重写以支持正确的测试
  • 同一个类不同的接口-您可能只需要从某个框架类继承一个实现,如果您的语言不允许多重继承,那么这将成为一个问题
  • 分发-分别提供接口和实现。如果您的实现永远不会在一个系统中使用,但声明它的类将在其中使用,那么只发送实现是没有用的
  • 内存消耗-一些运行时环境在减速时加载类对象。通过分离减速,接口将允许您推迟实现类的加载,直到实际使用为止

  • 除了有一个以上的实施之外的好处-

  • 测试-类可能会密封公共方法,这些方法随后无法被重写以支持正确的测试
  • 同一个类不同的接口-您可能只需要从某个框架类继承一个实现,如果您的语言不允许多重继承,那么这将成为一个问题
  • 分发-分别提供接口和实现。如果您的实现永远不会在一个系统中使用,但声明它的类将在其中使用,那么只发送实现是没有用的
  • 内存消耗-一些运行时环境在减速时加载类对象。通过分离减速,接口将允许您推迟实现类的加载,直到实际使用为止

  • 离开接口,它对于单元测试的模拟和依赖注入都很有用。通常情况下,编写抽象而不是具体的代码是很好的。因此,你会如何命名具体的类?我会称接口为IDataExtractor,因为这是接口的命名约定,并称为类DataExtractor。可能会重复下行表决,因为“这个问题没有显示任何研究成果。”谷歌搜索提供了许多关于接口的宗教辩论的例子,包括关于SO和的多个例子。离开接口,它对于单元测试的模拟目的以及依赖注入都很有用。通常情况下,编写抽象而不是具体的代码是很好的。因此,你会如何命名具体的类?我会称接口为IDataExtractor,因为这是接口的命名约定,并称为类DataExtractor。可能会重复下行表决,因为“这个问题没有显示任何研究成果。”谷歌搜索提供了许多关于界面的宗教辩论的例子,包括关于某某和某某的多个例子。