Padrão Proxy

Bom tarde pessoal!
Estava precisando de ajuda para passar um código em C# para Java. Sei apenas o Java, então estou passando dificuldade com a outra liguagem. Esse código é para um trabalho sobre Padrões de Projetos, no qual, o objeto de estudo é o padrão Proxy.

using System;

namespace ProxyPattern
{
    public interface Imagem
    {
        void Exibir();
    }

    public class ImagemArquivo : Imagem
    {
        public string NomeArquivo { get; private set; }
        private byte[] _file;

        public ImagemArquivo(string nomeArquivo)
        {
            NomeArquivo = nomeArquivo;
            _file = new byte[0];
        }

        public void Exibir()
        {
            Console.WriteLine($"Arquivo carregado {NomeArquivo} com {_file.Length} bytes.");
        }

        public void Carregar()
        {
            _file = System.IO.File.ReadAllBytes(NomeArquivo);
        }
    }

    public class ImagemProxy : Imagem
    {
        public string NomeArquivo { get; private set; }
        private ImagemArquivo _imagemInstance;

        public ImagemProxy(string nomeArquivo)
        {
            NomeArquivo = nomeArquivo;
        }

        public void Exibir()
        {
            if (_imagemInstance == null)
            {
                _imagemInstance = new ImagemArquivo(NomeArquivo);
                _imagemInstance.Carregar();
            }

            _imagemInstance.Exibir();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var imagem = new ImagemProxy("C:\\teste.jpg");
            imagem.Exibir();
        }
    }
}

Certo, mas qual é a sua dúvida e dificuldade?

O que você já fez?

1 curtida

Cara a partir do ImageProxy não consegui enteder muito bem.

A classe ImagemProxy encapsula o acesso à classe ImagemArquivo apenas.

1 curtida

Amigo, você conseguiria me explicar essa parte
_file = System.IO.File.ReadAllBytes(getNomeArquivo());
Não estou conseguindo adaptar para o Java, mesmo o usando o Path.

Como o atributo file é um array de bytes acredito que você possa fazer algo da seguinte forma:

byte[] bytes = Files.readAllBytes(Paths.get(nomeArquivo));

1 curtida

Cara, muito obrigado, ajudou muito mesmo!