Каково соглашение об именах для фабричного метода?
Вступление
Платформа приложения MacApp Macintosh [App89] всегда объявляет абстрактную операцию, которая определяет фабричный метод как Class* DoMakeClass(), где Class - это класс Product.
Эта цитата привела меня к вопросу о соглашениях об именах для шаблона проектирования Factory Method.
ожидания
Я ожидаю увидеть лучшие практики или полезные примеры, которые обеспечат четкое именование фабричных методов.
Поскольку это может зависеть от языка, давайте рассмотрим набор самых популярных языков: C#, Java, C++ и JavaScript.
контекст
Для контекста я предлагаю рассмотреть следующую структуру классов. У нас есть два абстрактных класса: Document и Application. Приложение содержит список документов, и должно быть возможно создать новый документ. Приложение имеет заводской метод CreateDocument()
,
Спасибо
2 ответа
ИМХО, имя метода зависит от контекста и характера создаваемого объекта. Может быть, поэтому вы не нашли четких соглашений. Например, Create()
метод может быть правильным в одном контексте, в то время как Open()
или же Build()
может быть более подходящим в других.
Нет строгих соглашений, связанных с этим шаблоном проектирования. Лучшей практикой будет использование "Do
" или же "Make
msgstr "префиксы для обозначения фабричного метода в некоторых языках, в которые не встроены виртуальные или абстрактные методы (например, javascript).