Я пытаюсь сделать простую игру. У меня есть класс для экранного буфера, класс для изображений и класс для спрайтов. Мой вопрос таков:
Поскольку каждый спрайт должен «принадлежать» к некоторому изображению (спрайт содержит только координаты внутри некоторого изображения и указатель/ссылку на изображение), должен ли я передать класс изображения в конструктор спрайтов, как так:design pattern определение
Sprite spriteInstance(imageInstance, rect, ...);
или имеют спрайтов, возвращаемые методом класса изображений
Sprite spriteInstance = imageInstance.createSprite(rect, ...);
или делает это дело личных предпочтений. (оба явно работают, мне просто интересно, считается ли один из «правым» или «professional» способ сделать это.)
То же самое касается отношения изображения/экрана: если поверхность должна быть возвращена экран или изображение прошло через экран.
Третий вариант, который я не пытался осуществить еще будет иметь класс «Игра», и сделать это:
Game gameInstance;
Image imageInstance = gameInstance.loadImage(path);
Sprite spriteInstance = gameInstance.newSprite(imageInstance, rect, ...);
Если второй/третий способы выше рекомендуются, если спрайт конструктор класса должен быть закрытым с классом изображения как «другом» или оставлен как общедоступный? И имеет ли этот тип метода имя, которое я могу найти для дальнейшего понимания? Это то, что называется «Factory pattern»?
Благодаря
На данный момент у меня нет игрового класса. Возможно я должен. Я упомянул это как мысль, которая пришла мне в голову, чтобы один объект отвечал за все аспекты игры, включая создание объектов. – baruch
Да, это правильно. Именование forImage не слишком ясно для меня, может, некоторые глаголы? Если бы это был Create.Sprite.forImage, это было бы. Здесь Create - ваш статический или singleton (также известный как фабрика), Sprite - объект свойства, а forImage - метод класса Sprite – user44298