Você acabou de criar um ImageStore
e passá-lo para um Renderer
que você faz. Não há motivo para solteiros aqui.
Eu tenho uma imagem de classe e outra ImageStore. A imagem é apenas um objeto de valor contendo o nome do pacote e o nome da imagem. O ImageStore faz todo o trabalho real: calcula o caminho real da imagem (com base no nome do pacote e da imagem) e o carrega do servidor.
Agora eu tenho uma hierarquia bastante grande (e profunda) de nós (este é um mecanismo de renderização para um jogo), por exemplo, agora estou em um grupo e quero inserir uma nova imagem. Eu faço:
var image = new Image("packageName", "imageName");
Neste momento, a imagem ainda não tem tamanho, pois não quero codificar o tamanho da imagem (nesse caso, pode ser um bloco, que nem sempre é 64 * 32, por exemplo) vista do jogo.
Eu gostaria de ter de alguma forma o ImageStore desanexado da render. Para poder usar apenas a imagem e o ImageStore sem a necessidade do renderizador.
Editar: Eu quero fazer isso porque eu gostaria de saber o tamanho de uma imagem mesmo quando a imagem não é renderizada. Para obter a imagem, é necessário solicitar ao ImageStore o tamanho, a âncora e o imageData. Os pacotes são assim:
package = {image01: {base64: "very very long string", width: 10, height: 20, anchorX: 1, anchorY: 10}}
Somente depois que o ImageStore é carregado, esse arquivo grande é capaz de saber a largura / altura da imagem;
Você acabou de criar um ImageStore
e passá-lo para um Renderer
que você faz. Não há motivo para solteiros aqui.
Sem realmente saber mais detalhes:
Sugerir que você renomeie sua estrutura de imagem existente para ImageInfo E crie um novo objeto chamado SelfLoadingImage, que tem uma interface de 'Imagem' que o Renderer pode usar para obter dados de pixel reais ou qualquer outra coisa.
Então, sob o capô, como esses dados de pixel são recuperados é um problema diferente que o Renderer não se importa. Agora você pode, por exemplo, ter um HardcodedImage para fins de teste.
No caso de um SelfLoadingImage, ele possui um construtor que usa um ImageInfo e um ImageStore e os usa quando necessário. Mas essas instâncias de SelfLoadingImage são adicionadas como objetos 'Imagem' ao seu sistema de renderização.
Tags architecture singleton