He elegido el patrón Factory Method para la implementación de los planificadores de máquinas virtuales (VmScheduler) porque este patrón proporciona una manera flexible y escalable de crear objetos sin tener que especificar las clases exactas de los objetos que se van a crear. Los diferentes tipos de VmScheduler (como VmSchedulerSpaceShared y VmSchedulerTimeShared) representan estrategias diferentes para asignar recursos a las máquinas virtuales. El Factory Method permite encapsular la lógica específica de cada estrategia y proporciona una interfaz común para interactuar con todas las estrategias.
Una manera de implementarlo sería:
Código:
package org.cloudbus.cloudsim;
/**
Interfaz de fábrica para crear instancias de VmScheduler.
*/
public abstract class VmSchedulerFactory {
public abstract VmScheduler createScheduler(List<? extends Pe> pelist);
}
package org.cloudbus.cloudsim;
import java.util.List;
/**
Fábrica concreta para crear instancias de VmSchedulerTimeShared.
*/
public class VmSchedulerTimeSharedFactory extends VmSchedulerFactory {
@Override
public VmScheduler createScheduler(List<? extends Pe> pelist) {
return new VmSchedulerTimeShared(pelist);
}
}
package org.cloudbus.cloudsim;
import java.util.List;
/**
Fábrica concreta para crear instancias de VmSchedulerSpaceShared.
*/
public class VmSchedulerSpaceSharedFactory extends VmSchedulerFactory {
@Override
public VmScheduler createScheduler(List<? extends Pe> pelist) {
return new VmSchedulerSpaceShared(pelist);
}
}
He elegido el patrón Factory Method para la implementación de los planificadores de máquinas virtuales (VmScheduler) porque este patrón proporciona una manera flexible y escalable de crear objetos sin tener que especificar las clases exactas de los objetos que se van a crear. Los diferentes tipos de VmScheduler (como VmSchedulerSpaceShared y VmSchedulerTimeShared) representan estrategias diferentes para asignar recursos a las máquinas virtuales. El Factory Method permite encapsular la lógica específica de cada estrategia y proporciona una interfaz común para interactuar con todas las estrategias.
Una manera de implementarlo sería:
Código: package org.cloudbus.cloudsim;
/**
package org.cloudbus.cloudsim;
import java.util.List;
/**
package org.cloudbus.cloudsim;
import java.util.List;
/**