Bueno, esto es lo que haría:
(TL; Versión DR: use las propiedades -d en la línea de comando de Java)
MyCloudOutputStreamFactory
dos clases de fábrica, digamos MyCloudOutputStreamFactory
y MyDevOutputStreamFactory
, cada una extendiéndose
interfaz pública MyOutputStreamFactory { public OutputStream getOutputStream (); }
Cada clase de fábrica tendría la lógica necesaria para configurar el flujo de salida de datos para su entorno respectivo, por ejemplo, abrir un archivo para la versión de desarrollo, etc.
- Obtuve el 96% en el mejor de cuatro en las Juntas de 2016, y deseo estudiar Economía para mi graduación. ¿Debo elegir DU o Shiv Nadar University?
- Creo que hay una palabra para esto, pero no estoy seguro de qué es o qué significa.
- Mis amigos se unieron en Capgemini pero yo no. ¿Qué hacer?
- Estoy interesado en iniciar negocios de importación / exportación que exporten textiles y cerámica de Marruecos y Europa. ¿Cuál es la mejor manera de comenzar?
- Conozco Java, pero Accenture me ha puesto en una función de prueba. ¿Qué tengo que hacer?
Me gustaría que mi programa escribiera datos en un OutputStream
.
El código de inicialización se vería así:
MyOutputStreamFactory factory = Class.forName (System.getProperty ("my.output.stream.factory.classname")). NewInstance (); OutputStream dataStream = factory.getOutputStream ();
En la línea de comando de Java, definiría una propiedad para el nombre de clase de fábrica,
por ejemplo, cuando se ejecuta en dev:
java -dmy.output.stream.factory.classname=com.example.MyDevOutputStreamFactory ...
y cuando se ejecuta en la nube:
java -dmy.output.stream.factory.classname=com.example.MyCloudOutputStreamFactory ...
MyDevOutputStreamFactory
necesitaría un nombre de archivo, por lo que podría definir otra propiedad para eso.
Disculpas de antemano por errores tipográficos / errores; ¡Soy inútil sin Eclipse! 🙂 Sin embargo, espero que entiendas la idea.