Java, Base64: Como escrever uma classe Base64OutputStream usando o Decorator Pattern
Baseado no meu original pergunta sobre a codificação RSA e Base64 e os comentários lá estou me perguntando qual é a melhor abordagem para escrever um Base64OutputStream (ou Input Stream). Originalmente, eu o chamei de Base64PrintWriter e o estendi do PrintWriter passando um PrintWriter para o Construto
import org.bouncycastle.util.encoders.Base64;
public class Base64OutputStream extends FilterOutputStream {
public Base64OutputStream(OutputStream out) {
super(out);
}
public void write(byte[] decodedBytes) throws IOException {
byte[] base64Message = Base64.encode(decodedBytes);
super.write(base64Message);
}
public void writeln(byte[] decodedBytes) throws IOException {
write(decodedBytes);
super.write("\n".getBytes());
super.flush();
}
}
Alterei minha implementação original para a acima e a inicializei com:
Base64OutputStream base64encoder = new Base64OutputStream(socket.getOutputStream());
As minhas perguntas são:
Este é um bom design?Pode ser feito melhor? Apliquei o padrão decorador corretament É bom estender o FilteredOutputStream em vez do OutputStream?Orácul indica que está bom, mas ainda existem desvantagens ou razões para se estender do OutputStream?lém disso, devo decorá-lo com BufferedOutputStream quando chamo o construto