Каково соглашение об именах для фабричного метода?

Вступление

Платформа приложения MacApp Macintosh [App89] всегда объявляет абстрактную операцию, которая определяет фабричный метод как Class* DoMakeClass(), где Class - это класс Product.

Эта цитата привела меня к вопросу о соглашениях об именах для шаблона проектирования Factory Method.

ожидания

Я ожидаю увидеть лучшие практики или полезные примеры, которые обеспечат четкое именование фабричных методов.

Поскольку это может зависеть от языка, давайте рассмотрим набор самых популярных языков: C#, Java, C++ и JavaScript.

контекст

Для контекста я предлагаю рассмотреть следующую структуру классов. У нас есть два абстрактных класса: Document и Application. Приложение содержит список документов, и должно быть возможно создать новый документ. Приложение имеет заводской метод CreateDocument(),

Спасибо

2 ответа

Решение

ИМХО, имя метода зависит от контекста и характера создаваемого объекта. Может быть, поэтому вы не нашли четких соглашений. Например, Create() метод может быть правильным в одном контексте, в то время как Open() или же Build() может быть более подходящим в других.

Нет строгих соглашений, связанных с этим шаблоном проектирования. Лучшей практикой будет использование "Do" или же "Makemsgstr "префиксы для обозначения фабричного метода в некоторых языках, в которые не встроены виртуальные или абстрактные методы (например, javascript).

Другие вопросы по тегам