使用后缀“ Template”作为模板方法模式的类名称是否是反模式?

问题描述

我正在使用模板方法模式。

我的抽象类具有处理迭代和记录的基本方法

像这样:

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);

}


我不能使用“导入”,因为它是界面的名称

我想不出比在后缀上使用“模板”更好的名称

使用后缀“ Template”作为“模板方法模式”的类名是否是反模式?

使用“ ImportingContext”是否更好

解决方法

一个明智的约定是对接口(和函数类型)使用 agent名词。在您的情况下,接口名称将为 Importer 。但是,您可能无法更改接口的名称。

如果抽象类的子类不打算具有状态(实例变量),则可以使用质量名词,例如 ArticleImport 。毕竟,该类处理文章,因此在名称中使用 Article 一词是合理的。