Crea una interfase a un conjunto de clases.
Se necesita codificar un SistemaOperativo. El SistemaOperativo esta compuesto de un Planificador, AdministradorMemoria, SistemaArchivos. Cada una de esas clases tiene un metodo para procesar, cargar y almacenar programas ejecutables. Se necesita exponer cada funcionalidad via la clase SistemaOperativo
Construir una clase Facade, que incluya o agregue todas las clases necesarias. Dicha clase provee un conjunto de metodos y para implantarlos, le delega el servicio a otros objetos.
Es posible ocultar la arquitectura de un sistema de informacion, y los clientes solo conocen los servicios de la arquitectura de informacion.
Una clase denominada Programa, contiene codigo maquina, se necesita ejecutar en el CPU de una computadora, almacenarlo en memoria RAM y cargarlo del disco duro.
public class Programa { .... }See the complete code for Programa here.
public String codigo() { return "mv ax,1"; }
La clase Planificador, AdministradorMemoria y SistemaArchivos permite cargar un programa a un CPU, Memoria RAM y Disco Duro respectivamente.
public class Planificador { .... }See the complete code for Planificador here.
public void planificar(Programa pr) { System.out.println("Planificando "+pr.codigo()); }
public class AdministradorMemoria { .... }See the complete code for AdministradorMemoria here.
public void cargar(Programa pr) { System.out.println("Cargando "+pr.codigo()); }
public class SistemaArchivos { .... }See the complete code for SistemaArchivos here.
public void leer(Programa pr) { System.out.println("Leyendo de disco "+pr.codigo()); }
La clase SistemaOperativo es una clase Facade, que declara una instancia privada de cada objeto y expone sus llamadas al sistema operativo
public class SistemaOperativo { .... }See the complete code for SistemaOperativo here.
private static Planificador scheduler = new Planificador(); private static AdministradorMemoria memoriavirtual = new AdministradorMemoria(); private static SistemaArchivos filesystem = new SistemaArchivos(); public static void exec(Programa pr) { scheduler.planificar(pr); } public static void mmap(Programa pr) { memoriavirtual.cargar(pr); } public static void read(Programa pr) { filesystem.leer(pr); }
Y un programa que invoque llamadas al sistema operativo
public class Shell { .... }See the complete code for Shell here.
public static void main(String[] args) { Programa pr = new Programa(); SistemaOperativo.read(pr); SistemaOperativo.mmap(pr); SistemaOperativo.exec(pr); }