我该怎么称呼创建实例的接口

时间:2018-04-01 09:14:06

标签: java oop interface

我应该将具有抽象方法的接口称为什么,该方法返回类的新实例?

例如,我有Foo类,execute是实现Parser的{​​{1}}类的实例,它由实现{{1}的类创建接口。 (不是直接创建Runnable实例,以便允许使用自定义ParserXXX)我应该将其称为Parser

Parser

我想到了,但他们认为不合适:

  • ParserSupplier:供应商不参与
  • ParserConstructor:并不总是构造函数
  • ParserBuilder,ParserFactory
  • ParserGenerator,ParserProvider,ParserCreator

这也是一种常见的设计模式还是反模式?

1 个答案:

答案 0 :(得分:5)

ParserFactory是您给出的示例中最常用的命名法,因为它与Factory Pattern非常接近。正如评论中所提到的,表达此模式的更常见方式是返回Parser类型的对象,而不仅仅是Runnable并调用创建Parser createParser的方法(或者甚至只是create)而不是get。通常,get指的是获取现有对象(即私有字段保存一个值并返回,以便对get的两次后续调用返回相同的对象,直到字段被重新分配)而不是为每个调用创建一个新对象。

例如,表达此模式的常用方法类似于以下内容:

@FunctionalInterface
interface ParserFactory {
    Parser createParser(Data data);
}

使用此样式,Data的实例可以解析如下:

Data data = // ...
ParserFactory factory = // ... using your anonymous inner-class ...
Parser parser = factory.createParser(data);
parser.run();

即使对createParser的调用存储为Runnable而不是Parser,此工厂代表仍然有效,因为ParserRunnable。例如,对createParser的以下两个调用都是有效的:

Data data = // ...
ParserFactory factory = // ...

Runnable runnable = factory.createParser(data);
Parser parser = factory.createParser(data);