模板方法模式的class名称使用后缀"Template"是反模式吗?
Is it an anti-pattern to use the suffix "Template" for the class name of the template method pattern?
我正在使用模板方法模式。
我的摘要 class 有一个框架方法处理迭代和日志记录。
像这样:
abstract public class ImportingTemplate implements Importing{
public void importArticles(List<Long> articleIds)
{
for(long articleId : articleIds)
{
Log log = importArticle(articleId);
logService.save(log);
}
}
protected abstract Log importArticle(long articleId);
}
我不能使用“导入”,因为它是接口的名称。
我想不出比在后缀上使用“模板”更好的名字了。
“模板方法模式”的class名称使用后缀“Template”是反模式吗?
使用“ImportingContext”更好吗
一个明智的约定是对接口(和函数类型)使用代理名词。在您的情况下,接口的名称将是 Importer。但是,您可能无法更改接口的名称。
如果你的摘要 class 的子class 不意味着有一个状态(实例变量)我会使用一个 质量名词 比如实例 ArticleImport。毕竟,class 处理文章,因此在名称中使用单词 Article 是有意义的。
我正在使用模板方法模式。
我的摘要 class 有一个框架方法处理迭代和日志记录。
像这样:
abstract public class ImportingTemplate implements Importing{
public void importArticles(List<Long> articleIds)
{
for(long articleId : articleIds)
{
Log log = importArticle(articleId);
logService.save(log);
}
}
protected abstract Log importArticle(long articleId);
}
我不能使用“导入”,因为它是接口的名称。
我想不出比在后缀上使用“模板”更好的名字了。
“模板方法模式”的class名称使用后缀“Template”是反模式吗?
使用“ImportingContext”更好吗
一个明智的约定是对接口(和函数类型)使用代理名词。在您的情况下,接口的名称将是 Importer。但是,您可能无法更改接口的名称。
如果你的摘要 class 的子class 不意味着有一个状态(实例变量)我会使用一个 质量名词 比如实例 ArticleImport。毕竟,class 处理文章,因此在名称中使用单词 Article 是有意义的。