Объект sf::Sprite
может использовать один и тот же объект sf::Texture
с несколькими объектами sf::Sprite
, поэтому я хочу создать Диспетчер текстур , чтобы не одна и та же текстура несколько раз повторялась.
Я использую идентификатор для обозначения текстур. A TextureID
отображает текстуру на путь к файлу, соответствующий файлу, содержащему текстуру:
std::filesystem::path mapIdToFilepath(TextureID id);
В TextureManager
Я хочу иметь функцию-член loadTexture()
, я думаю:
с loadTexture()
принять TextureID
:
sf::Texture& TextureManager::loadTexture(TextureID id);
Функция должна затем внутренне преобразовать идентификатор TextureID
в путь к файлу текстуры, вызвав mapIdToFilepath()
.
или приняв путь к файлу текстуры в качестве аргумента:
sf::Texture& TextureManager::loadTexture(std::filesystem::path filepath);
Клиентский код, вызывающий эту функцию, должен преобразовать идентификатор TextureID
пути к файлу текстуры. Однако этой функции не обязательно знать о существовании mapIdToFilepath
, потому что отображение выполняется извне .
Я думаю, что первый подход более удобен но он связывает TextureManager
с mapIdToFilepath()
, потому что он внутренне выполняет преобразование TextureID
пути к файлу.
С архитектурной точки зрения , какие аспекты я должен иметь в виду, когда учитывая эти два разных подхода?