Является ли антишаблоном использование суффикса «Template» для имени класса шаблона метода шаблона?

#design-patterns #naming-conventions #anti-patterns

#шаблоны проектирования #соглашения об именовании #антишаблоны

Вопрос:

Я использую шаблон метода шаблона.

В моем абстрактном классе есть метод скелета, обрабатывающий итерации и ведение журнала.

вот так:

 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» в суффиксе.

Является ли антишаблоном использование суффикса «Template» для имени класса «шаблона метода шаблона»?

Лучше ли использовать «ImportingContext»

Ответ №1:

Одним из разумных соглашений является использование имени агента для интерфейсов (и типов функций). В вашем случае имя интерфейса будет Importer . Однако вы не сможете изменить имя интерфейса.

Если подкласс вашего абстрактного класса не должен иметь состояние (переменные экземпляра) Я бы использовал массовое существительное, например, ArticleImport. В конце концов, класс обрабатывает статьи, поэтому имеет смысл использовать слово Article в имени.

Комментарии:

1. Если я использую Importer в качестве имени интерфейса (имеет значение: public void importArticles(List<Long> articleIds) ) и использую TwitterImport и FacebookImport в качестве имени подкласса, какое хорошее имя для абстрактного скелетного класса? Я хочу инкапсулировать цикл и ведение журнала с помощью шаблона Template-Method-Pattern. Было бы лучше назвать его ArticleImportTemplate , чтобы указать, что я использовал шаблон Template-Method-Pattern? или MediaImport лучше?

2. @kang MediaImport кажется хорошим именем, если это любой вид мультимедиа, который можно импортировать (текст, изображения и т. Д.). Я бы не стал использовать Template в имени, потому что эта информация уже может быть извлечена из ключевого слова abstract (любой абстрактный класс является своего рода шаблоном).